正常操作:
開始的時候直接在 UIView 上 Add 一個Layer
[self.layer addSublayer:self.vipPriceGradientLayer];
- (CAGradientLayer *)vipPriceGradientLayer
{
if (!_vipPriceGradientLayer) {
CAGradientLayer *gl = [CAGradientLayer layer];
gl.startPoint = CGPointMake(0.62, 0);
gl.endPoint = CGPointMake(0.62, 1);
gl.colors = @[(__bridge id)[UIColor colorWithHexString:@"#FEE5B6"].CGColor, (__bridge id)[UIColor colorWithHexString:@"#FED28B"].CGColor];
gl.locations = @[@(0), @(1.0f)];
gl.cornerRadius = XXBPtScale(5);
_vipPriceGradientLayer = gl;
}
return _vipPriceGradientLayer;
}
解決方法:
+ (Class)layerClass
{
return [CAGradientLayer class];
}
- (instancetype)init
{
self = [super init];
if (self) {
CAGradientLayer *gl = (CAGradientLayer *)self.layer;
gl.startPoint = CGPointMake(0.62, 0);
gl.endPoint = CGPointMake(0.62, 1);
gl.colors = @[(__bridge id)[UIColor colorWithHexString:@"#FEE5B6"].CGColor, (__bridge id)[UIColor colorWithHexString:@"#FED28B"].CGColor];
gl.locations = @[@(0), @(1.0f)];
gl.cornerRadius = 5;
self.frame = CGRectMake(0, 0, 0, 20);
}
return self;
}
轉自(感謝大佬):https://duxinfeng.com/post/解決-CAGradientLayer-閃爍問題