ios - 如何将 CAGradient 应用于图片的下方?

标签 ios cagradientlayer

gradientMask.startPoint = CGPointMake(1.0, 0.0);

gradientMask.endPoint = CGPointMake(1.0, 0.5);

它会出现在上半部分,但不会出现在图片的下半部分,请帮助我?

最佳答案

尝试以下代码来创建填充整个高度的渐变。一旦它工作,尝试更改开始和结束值。您的问题可能与您如何创建它、您如何设置框架或它可能与使用 clearColor 相关。 .可能值得先使用其他东西,比如红色。

将渐变层的属性添加到您的单元格类中,以便您可以访问它:

@property CAGradientLayer *gradient;

添加此功能,以便您可以轻松创建渐变图层。
CAGradientLayer *createBackgroundGradientLayer(CGRect forFrame,UIColor *fromColour,UIColor *toColour){
    CAGradientLayer *gradient = [CAGradientLayer layer];
    gradient.startPoint = CGPointMake(0.0, 0.0);
    gradient.endPoint = CGPointMake(1.0, 1.0);
    gradient.colors = [NSArray arrayWithObjects:(id)[fromColour CGColor],(id)[toColour CGColor], nil];
    gradient.frame = forFrame;

    return gradient;
}

在您的单元格中创建渐变的地方,请执行以下操作:您真的想在 viewWillAppear 中执行此操作而不是 viewDidLoad所以帧大小是正确的。
// Create new gradient layer
self.gradient = createBackgroundGradientLayer(cell.hotelBg.layer.bounds,[UIColor blackColor],[UIColor clearColor]);

// Add the gradient layer to the back.
[cell.hotelBg.layer insertSublayer:gradient atIndex:0];

布局更改时需要重置背景渐变层框架。覆盖 layoutSubviews自定义单元格中的方法。
- (void)layoutSubviews{
    [super layoutSubviews];

    // Re-align the background gradient layer to the correct bounds.
    self.gradient.frame=self.hotelBg.layer.bounds;
}

假设 self.hotelBg是某种具有适当大小的约束等的 View 。

关于ios - 如何将 CAGradient 应用于图片的下方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31856403/

相关文章:

iphone - initWithCoder 没有设置 UILabel 属性(UIFont 和文本颜色)

iPhone如何在打字时获取UITextField的文本?

swift - GradientLayer 显示在按钮外

ios - 仅水平设置 CAGradientLayer 动画

ios - 包标识符构建错误 xamarin 形成 ios 和 ios 扩展项目

ios - ObjC : differentiating between NSValue and NSNumber

iOS10 + 渐变停止工作

ios - 每次出现 View 时,UIView 层的子层显示不同/随机

ios - UITableViewCell的CAGradient层问题

iphone - 不调用方法 didSelectRowAtIndexPath :