当您说“将其作为渐变应用到图像上”时,您的意思是作为蒙版(在顶部显示图像,在底部将图像淡化为透明)?如果是这种情况,您可以使用 CAGradientLayer 将该渐变应用为蒙版:
CAGradientLayer *gradientMask = [CAGradientLayer layer];
gradientMask.frame = self.imageView.bounds;
gradientMask.colors = @[(id)[UIColor whiteColor].CGColor,
(id)[UIColor clearColor].CGColor];
self.imageView.layer.mask = gradientMask;
上面做了一个简单的垂直渐变(因为默认是垂直的,线性渐变)。但是您询问了startPoint、endPoint 和locations。例如,如果您希望水平应用遮罩,您可以:
gradientMask.startPoint = CGPointMake(0.0, 0.5); // start at left middle
gradientMask.endPoint = CGPointMake(1.0, 0.5); // end at right middle
如果您想要两个渐变,一个在前 10%,另一个在最后 10%,您可以这样做:
gradientMask.colors = @[(id)[UIColor clearColor].CGColor,
(id)[UIColor whiteColor].CGColor,
(id)[UIColor whiteColor].CGColor,
(id)[UIColor clearColor].CGColor];
gradientMask.locations = @[@0.0, @0.10, @0.90, @1.0];
如果您想要一个简单的渐变本身(而不是作为蒙版),您可以创建一个view,然后将渐变层添加到其中:
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.colors = @[(id)[UIColor whiteColor].CGColor,
(id)[UIColor blackColor].CGColor];
[view.layer addSublayer:gradient];
见CAGradientLayerclass reference。