【问题标题】:How to load a PNG as an opaque image within a CALayer?如何在 CALayer 中将 PNG 作为不透明图像加载?
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2010-12-14
      • 1970-01-01
      • 2016-07-17
      • 2011-03-04
      • 2020-11-26
      • 1970-01-01
      • 2021-06-01
      • 1970-01-01
      • 2016-06-03
      相关资源
      最近更新 更多