我想在视频的顶部和底部为我的视频播放器提供渐变效果。我正在使用以下方式,但它没有给出更平滑的效果,即它在图纸的两个终点处创建了两条白色水平线。
实际上,我创建了一个UIView
的子类,它使用CAGradientLayer
作为其层。我已经完成了使图层跟随superview的方向,它工作正常。 Check this answer for reference
以下是UIView
的子类,名为 GradientView
GradientView.h
@interface GradientView : UIView
@property (nonatomic, strong, readonly) CAGradientLayer *layer;
@end
GradientView.m
@implementation GradientView
@dynamic layer;
+ (Class)layerClass {
return [CAGradientLayer class];
}
@end
实例
IBOutlet GradientView *viewControls;
使用它:
-(void)applyGradientEffect
{
UIColor *endColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.90];
UIColor *centerColor = [UIColor clearColor];
viewControls.layer.colors = [NSArray arrayWithObjects:
(id)[endColor CGColor],
(id)[centerColor CGColor],
(id)[centerColor CGColor],
(id)[endColor CGColor],
nil];
viewControls.layer.startPoint = CGPointMake(0.5, 1.0);
viewControls.layer.endPoint = CGPointMake(0.5, 0.0);
}
我还尝试使用locations
的{{1}}属性而不是CAGradientLayer
和startPoint
属性,类似于以下代码段。还是不够顺畅。
endPoint
只有当我只使用2种颜色时,渐变效果才会更平滑 像下面的代码一样从下到上。 (它会产生渐变效果 只有底边,我在顶部和底部都需要这样的效果)
viewControls.layer.locations = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:0.2],
nil];
可能是什么原因?在这种情况下是默认行为吗?我在画画时做错了吗?