使用CAGradientLayer的渐变效果会创建水平线..(效果不会更平滑)

时间:2016-05-31 12:54:44

标签: ios calayer cagradientlayer

我想在视频的顶部和底部为我的视频播放器提供渐变效果。我正在使用以下方式,但它没有给出更平滑的效果,即它在图纸的两个终点处创建了两条白色水平线。

enter image description here

实际上,我创建了一个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}}属性而不是CAGradientLayerstartPoint属性,类似于以下代码段。还是不够顺畅。

endPoint
  

只有当我只使用2种颜色时,渐变效果才会更平滑   像下面的代码一样从下到上。 (它会产生渐变效果   只有底边,我在顶部和底部都需要这样的效果)

viewControls.layer.locations = [NSArray arrayWithObjects:
    [NSNumber numberWithFloat:0.0f],
    [NSNumber numberWithFloat:0.2],
    nil];

可能是什么原因?在这种情况下是默认行为吗?我在画画时做错了吗?

0 个答案:

没有答案