【发布时间】:2015-06-19 07:53:23
【问题描述】:
我需要在 CALayer 中本地加载我的应用程序中的各种 PNG 图像。为此,我的代码如下所示:
CALayer *myLayer = [[CALayer alloc] init];
UIImage *myImage = [UIImage imageNamed:@"nonTransparentBackground"];
[myLayer setOpaque:YES];
[myLayer setContents:(__bridge id)[myImage CGImage]];
- 当我在模拟器中查看应用程序并选择“颜色混合 层的选项,整个层有一个淡红色的色调(即阿尔法 通道存在,因此它不是不透明的)。
- 如果我删除图像,所以图层是空的,它会变成绿色,所以 CALayer 没有问题。
- 如果我将图像加载为 jpg 而不是 .png,它也可以正常工作,并且图层显示为绿色。
- 我的 PNG 文件没有 alpha 通道(我使用 PS 保存它,但未选中透明度)。
- 我现在的猜测是,它与使用 UIImage imagedNamed: 方法创建 PNG 时的保存方式有关。也许此时 iOS 会转换所有 PNG,以便它们具有 alpha 通道。这就是我目前正在调查的内容。
2015 年 4 月 15 日更新:我创建了一个测试应用程序,除了在后台加载一个 PNG 文件之外什么都不做,而且它可以工作,这是个好消息。我的应用程序中一定有什么东西导致了这种行为。希望识别时间不会太长。
【问题讨论】:
标签: objective-c uiimage ios-simulator calayer cgimage