VLCMaskView.m 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //
  2. // VLCMaskView.m
  3. // VLC for iOS
  4. //
  5. // Created by Tobias Conradi on 07.11.15.
  6. // Copyright © 2015 VideoLAN. All rights reserved.
  7. //
  8. #import "VLCMaskView.h"
  9. #import <QuartzCore/QuartzCore.h>
  10. @interface VLCMaskView()
  11. @property (nonatomic) CAGradientLayer *gradientLayer;
  12. @end
  13. @implementation VLCMaskView
  14. - (instancetype)initWithFrame:(CGRect)frame
  15. {
  16. self = [super initWithFrame:frame];
  17. if (self) {
  18. [self.layer addSublayer:self.gradientLayer];
  19. [self updateGradientLayer];
  20. }
  21. return self;
  22. }
  23. - (instancetype)initWithCoder:(NSCoder *)aDecoder
  24. {
  25. self = [super initWithCoder:aDecoder];
  26. if (self) {
  27. [self.layer addSublayer:self.gradientLayer];
  28. [self updateGradientLayer];
  29. }
  30. return self;
  31. }
  32. - (void)layoutSubviews
  33. {
  34. [super layoutSubviews];
  35. [self updateGradientLayer];
  36. }
  37. - (void)updateGradientLayer
  38. {
  39. CGSize size = self.bounds.size;
  40. CGFloat height = size.height;
  41. self.gradientLayer.frame = CGRectMake(0, 0, size.width, height);
  42. self.gradientLayer.locations = @[@(self.maskEnd / height), @(self.maskStart / height)];
  43. }
  44. #pragma mark - Properties
  45. - (CAGradientLayer *)gradientLayer
  46. {
  47. if (!_gradientLayer) {
  48. _gradientLayer = [CAGradientLayer layer];
  49. _gradientLayer.colors = @[(id)[UIColor colorWithWhite:0.0 alpha:0.0].CGColor, (id)[UIColor colorWithWhite:0.0 alpha:1.0].CGColor];
  50. }
  51. return _gradientLayer;
  52. }
  53. - (void)setMaskStart:(CGFloat)maskStart
  54. {
  55. _maskStart = maskStart;
  56. [self updateGradientLayer];
  57. }
  58. - (void)setMaskEnd:(CGFloat)maskEnd
  59. {
  60. _maskEnd = maskEnd;
  61. [self updateGradientLayer];
  62. }
  63. @end