将CAGradientLayer当做mask使用
效果
源码
https://github.com/YouXianMing/Animations
// // CAGradientView.h // MaskView // // Created by YouXianMing on 16/2/15. // Copyright © 2016年 YouXianMing. All rights reserved. // #import <UIKit/UIKit.h> @interface CAGradientView : UIView /** * CAGradientLayer's colors. */ @property (nonatomic, strong) NSArray *colors; /** * CAGradientLayer's locations. */ @property (nonatomic, strong) NSArray *locations; /** * CAGradientLayer's startPoint. */ @property (nonatomic) CGPoint startPoint; /** * CAGradientLayer's endPoint. */ @property (nonatomic) CGPoint endPoint; @end
// // CAGradientView.m // MaskView // // Created by YouXianMing on 16/2/15. // Copyright © 2016年 YouXianMing. All rights reserved. // #import "CAGradientView.h" @interface CAGradientView () { CAGradientLayer *_gradientLayer; } @end @implementation CAGradientView + (Class)layerClass { return [CAGradientLayer class]; } - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { _gradientLayer = (CAGradientLayer *)self.layer; } return self; } #pragma mark - 重写setter,getter方法 @synthesize colors = _colors; - (void)setColors:(NSArray *)colors { _colors = colors; // 将color转换成CGColor NSMutableArray *cgColors = [NSMutableArray array]; for (UIColor *tmp in colors) { id cgColor = (__bridge id)tmp.CGColor; [cgColors addObject:cgColor]; } // 设置Colors _gradientLayer.colors = cgColors; } - (NSArray *)colors { return _colors; } @synthesize locations = _locations; - (void)setLocations:(NSArray *)locations { _locations = locations; _gradientLayer.locations = _locations; } - (NSArray *)locations { return _locations; } @synthesize startPoint = _startPoint; - (void)setStartPoint:(CGPoint)startPoint { _startPoint = startPoint; _gradientLayer.startPoint = startPoint; } - (CGPoint)startPoint { return _startPoint; } @synthesize endPoint = _endPoint; - (void)setEndPoint:(CGPoint)endPoint { _endPoint = endPoint; _gradientLayer.endPoint = endPoint; } - (CGPoint)endPoint { return _endPoint; } @end
细节