如何将 CAGradient 应用到图片的下方?

How can I apply CAGradient to down part of the pic?

gradientMask.startPoint = CGPointMake(1.0, 0.0);

gradientMask.endPoint = CGPointMake(1.0, 0.5);

图片的上半部分出现了,下半部分不出现了请帮帮我?

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

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

@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 是某种视图,它具有适当大小的约束等。