5

我在应用商店中有一款应用接近 5 星评级,但是当 iOS 6 发布时,应用主视图层次结构中的一些视图开始闪烁。这发生在商店中的应用程序(我在 iOS6 发布时将其删除)以及模拟器中。

我花了大约 14 个小时,尝试了 100 件事,在 Xcode 中调试它,但无法得到任何牵引力。子视图消失又重新出现,就像有一个小鬼随机地为它们中的每一个设置可见属性,最多每秒 10 次,在一切正常的较长时间之间。

主界面是一个用户可以旋转的表盘,我在图层上使用 3d 变换来旋转它。我发现的唯一模式是,当表盘旋转到某些离散位置时,4 个消失的子视图中的 3 个一起消失,就好像锁定为一个一样。

第 4 个消失的子视图应该是静态图像,它会闪烁,没有明显的图案。

我喜欢任何关于如何调试它的想法和提示。这不是内存警告,执行额外的 [setNeedsToDisplay] 似乎没有效果。我开始认为 Apple 在 iOS6 中破坏了某些东西,但我找不到其他人谈论这些问题。


以下是主视图的子视图和 CALayers 层次结构的细分:

  1. 我的层次结构包含 2 个很好的基本 CALayers。
  2. 上面是一个非常大的自定义 UIView(使用 drawRect)和一个大的 UIImageVIew,当底部的一个旋转到某些位置时,它们总是一起闪烁。只有底部的正在旋转。
  3. 上面是一个自定义的文本绘制 UIView,它不会闪烁。
  4. 上面是一个小的红色引脚图形 UIImageView,它与上述 2 个视图同时闪烁。这是一个普通的 UIImageView;没有转换或子类或自定义绘图代码!然而它仍然有同样的闪烁。
  5. 上面是一个不可见的 UIButton,它似乎一直在工作。
  6. 上面是一个 UIImageView,它是一个不断闪烁的小图形,与其他 3 个“链接”层的基于旋转的闪烁无关(我说链接是因为它们喜欢一起消失)。
4

2 回答 2

3

(这不是真正的答案,这是对老鼠答案的回复,但我还没有声誉点可以评论)

是的,明确设置 zPositions 似乎可以解决它,是的,这很奇怪。我也遇到了这个问题并在这里写了博客:iOS 6 Rendering Bug: 3D-Rotation Causes Layers to Render without Respect for View Hierarchy。这似乎是 iOS 6 中引入的一个渲染错误。该博客有一个指向我向 Apple 提交的错误的 Open Radar 版本的链接,以及一个可以运行以查看错误和 zPosition 修复的示例项目。

于 2012-09-26T17:38:41.527 回答
2

尝试手动设置视图层 z 属性以确保层次结构是您需要的。

于 2012-09-24T02:45:52.960 回答