如何在CALayer中加载PNG作为不透明图像?

时间:2015-04-13 20:52:42

标签: objective-c uiimage ios-simulator calayer cgimage

我需要在CALayer中原生地在我的应用中加载各种PNG图像。为此,我的代码如下:

 CALayer *myLayer  = [[CALayer alloc] init];
 UIImage *myImage = [UIImage imageNamed:@"nonTransparentBackground"];
 [myLayer setOpaque:YES];
 [myLayer setContents:(__bridge id)[myImage CGImage]];
  • 当我在模拟器中查看应用程序并选择“混合颜色”时 在图层选项中,整个图层具有偏红色调(即alpha 通道存在所以它不是不透明的)。
  • 如果我删除图像,那么图层是空的,它会变成绿色,所以CALayer没有任何问题。
  • 如果不是.png,我将图像加载为jpg,它也可以正常工作,图层显示为绿色。
  • 我的PNG文件没有Alpha通道(我已将其保存为未选中透明度的PS)。
  • 我现在的猜测是,它与使用UIImage imagedNamed:方法创建时如何保存PNG有关。也许在这个时候iOS转换所有PNG,以便有一个alpha通道。这就是我正在调查的内容。

更新2015年4月15日:我创建了一个测试应用程序,除了在背景中加载PNG文件之外什么都不做,它起作用,这是个好消息。我的应用中某处必定存在导致此行为的内容。希望识别时间不会太长。

1 个答案:

答案 0 :(得分:1)

我发布在这里以防将来有人遇到问题,但我对此表示怀疑。事实证明,问题与我的实际代码有关,但与部署目标无关。我当前的目标是7.1但是通过更改为8.0,它按预期工作。我不知道这是Xcode / Simulator相关还是iOS相关,所以我可能会坚持使用iOS 7直到下次更新。