繁体   English   中英

CALayer用背景覆盖内容图像

[英]CALayer overwrites contents-image with background

我有一个带有自定义CALayer的自定义UIView。 图层覆盖-(void)显示; 将CGImageRef分配给图层content-property。 原则上,这可以按预期方式(大部分时间)运行,但在某些设备上,视图有时会变成纯白色。 实际上,我可以通过设置backgoundColor来选择颜色。

某些设备意味着:在我的3个测试设备中,只有带iOS7的iphone5出现故障。 支持iOS8的iPhone6 +和iPad均可使用。

有时意味着:原则上它也可以在不良设备上工作,但大约有50-50倍的机会可以获取实际图像或纯背景...

(我正在等待一些测试人员的反馈,以获得更好的统计信息)

实际上,我希望阐明该层或视图(作为委托)的哪种方法,我必须覆盖空方法才能停止这种丑陋的行为。

另外,我将尝试将我的图层添加为普通视图图层的子图层。 但我想避免这种情况,因为最终我会在视图的大小中得到两层,这是相当大的...

希望有人对我有所提示...预先感谢

更新:它不仅限于iOS7,我也有运行iOS8.4的iPad的报告...

更新2:我发现了更多。 在我看来,这不是图层合成的问题,而是CGBitmapContext的问题。
我创建了一个位图上下文并保留对其的引用,以便在保留一些旧内容的同时呈现其他部分。
之后,我调用CGBitmapContextCreateImage()并将其生成的图像设置为图层的内容。
该图像将不包含我渲染的所有内容。 为了进行测试,我实现了可以通过触摸事件触发内容的更新:

  • 如果我保留对图像的引用并再次将相同的图像设置为内容属性,则表明相同的区域仍为白色(因此实际上该图层正确显示了图像)
  • 如果我再次调用CGBitmapContextCreate()并将结果设置为图层内容,则图像已完成。 同时,位图上下文没有变化。 这意味着对CGBitmapContextCreate()的2次相应调用将返回不同的图像?

    --

我停止弄清楚int了。 我开始认为它是Core-Graphics / Animation中的错误。 还是我的虐待。 它仅在较大的视图中发生。

CATiledLayer的首次尝试并没有使我非常高兴,但似乎是可行的方法……或者至少是一个指向我将重组代码的方向的指针……

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM