我想在图片上实现alpha渐变,从图像顶部的0.5 alpha到底部的0.0 alpha。欢迎提供任何建议、教程或链接。
CGImageCreateWithMask
来应用掩膜图像。您可以通过在灰度或仅 Alpha 的 CGBitmapContext 中绘制 CGContextDrawLinearGradient
来生成适当的掩膜。mask
属性中。您可以使用适当的颜色创建一个CAGradientLayer
来创建此掩膜层。kCGBlendModeDestinationIn
在其上绘制适当的 alpha 梯度。或者先绘制渐变,然后使用kCGBlendModeSourceIn
在其上绘制图像。在这两种情况下,CGContextDrawLinearGradient
再次发挥了作用。然后,当然要使用CGBitmapContextCreateImage
或基于数据缓冲区的CGImageCreate
从CGContext中获取图像。CAGradientLayer
。UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)] autorelease];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
[view.layer insertSublayer:gradient atIndex:0];
另一种选择
您可以使用Graphics Contexts。 所有绘图都发生在图形上下文中。如果您想创建具有径向渐变、线性渐变或其他任何效果的图像,则需要:
- 使用
UIGraphicsBeginImageContextWithOptions
为图像创建图形上下文。- 进行您想要出现在图像中的任何绘图。
- 调用
UIGraphicsGetImageFromCurrentImageContext
从上下文获取图像。
这会给您一个UIImage
,因此无需从CGImage
转换。- 调用
UIGraphicsEndImageContext
清除上下文。您还可以查看UImage上的径向渐变
以下是其他一些SO问题,应该为您提供所需的一切:
我在这里发现了一些东西,它很棒!
AlphaGradientView* gradient = [[AlphaGradientView alloc] initWithFrame:
CGRectMake(self.view.frame.size.width - 150, 0, 150,
self.view.frame.size.height)];
gradient.color = [UIColor yellowColor];
gradient.direction = GRADIENT_RIGHT;
[self.view addSubview:gradient];