// Make half-transparent grey, the background color for the layer
UIColor *Light_Grey
= [UIColor colorWithRed : 110/255.0
green : 110/255.0
blue : 110/255.0
alpha : 0.5];
// Get a CGColor object with the same color values
CGColorRef cgLight_Grey = [Light_Grey CGColor];
[boxLayer setBackgroundColor : cgLight_Grey];
// Create a UIImage
UIImage *layerImage = [UIImage imageNamed : @"Test.png"];
// Get the underlying CGImage
CGImageRef image = [layerImage CGImage];
// Put the CGImage on the layer
[boxLayer setContents : (id) image];
考虑上面的示例代码段。
UIColor * Light_Grey 设置为alpha值0.5。我的问题是:无论如何我可以设置 CGImageRef图像的alpha值吗?
我问这个的原因是即使 boxLayer 的alpha值为0.5,设置在 BoxLayer 之上的任何图像似乎都有一个alpha默认值为1 ,这将掩盖直接位于图像下方的任何内容。
希望有人知道这一点可以提供帮助。
答案 0 :(得分:1)
看起来你可以使用CGImageCreate
复制并使用解码数组重新缩放alpha(例如0.0-0.5)
解码
图像的解码数组。如果你 不想让你重新映射 图像的颜色值,传递NULL 解码数组。对于每种颜色 图像颜色空间中的组件 (包括alpha分量),a decode array提供了一对值 表示的上限和下限 范围。例如,解码阵列 对于RGB颜色的源图像 空间总共包含六个条目, 由一对红色组成, 绿色和蓝色。当图像是 渲染,Quartz使用线性 转换为原始地图 组件值转换为相对数字 在你指定的范围内 适合目的地颜色 空间。