【发布时间】:2012-09-21 21:33:44
【问题描述】:
我在应用商店中有一款应用评分接近 5 星,但是当 iOS 6 发布时,应用主视图层次结构中的一些视图开始闪烁。这发生在商店中的应用程序(我在 iOS6 发布时将其删除)以及模拟器中。
我花了大约 14 个小时,尝试了 100 件事情,在 Xcode 中调试它,但无法获得任何牵引力。子视图消失并重新出现,就像有一个小鬼随机地为它们中的每一个设置可见属性,最多每秒 10 次,在一切正常的较长时间之间。
主界面是一个用户可以旋转的表盘,我在图层上使用 3d 变换来旋转它。我发现的唯一模式是,当表盘旋转到某些离散位置时,4 个消失的子视图中的 3 个一起消失,就好像锁定为一个一样。
第 4 个消失的子视图应该是静态图像,它会闪烁,没有明显的图案。
我很想知道如何调试它的任何想法和提示。这不是内存警告,执行额外的 [setNeedsToDisplay] 似乎没有效果。我开始认为 Apple 在 iOS6 中破坏了某些东西,但我找不到其他人在谈论这些问题。
以下是主视图的子视图和 CALayers 层次结构的细分:
- 我的层次结构包含 2 个很好的基本 CALayers。
- 上面是一个非常大的自定义 UIView(使用 drawRect)和一个 大的 UIImageVIew 一起闪烁,总是,当底部 一个是旋转到某些位置。只有最底层的是 旋转。
- 上面是自定义文本绘制 UIView,不会闪烁。
- 上方是一个红色的小针图形 UIImageView,它在 与上述 2 个视图完全相同的时间。这是香草 UIImageView;没有转换或子类或自定义绘图代码!和 但它仍然闪烁。
- 上面是一个不可见的 UIButton,它似乎一直在工作。
- 上面是一个 UIImageView,它是一个闪烁的小图形 并且不断地,与基于旋转的闪烁无关 其他 3 个“链接”层(我说链接是因为它们喜欢消失 一起)。
【问题讨论】:
-
您是否尝试通过覆盖
isHidden、alpha的设置器和更改顺序的层方法来添加一些日志消息? Apple 对 UIKit 进行了一些更改,这是事实,但这并不意味着您不是该问题的负责人。就像他们在UITouch.h收到警告说Instance variables of any UIKit class should be considered private...一样,猜猜看,这些变量在 iOs6 上不再公开。 -
我按照您的建议做了,并在我的 UIView 子类中添加了对 setHidden: 和 setAlpha: 的覆盖,这些子类有问题并在每个子类上设置了一个断点——它们从未被击中。不过,不确定您对 UIKit 更改的意思。
标签: iphone uiview calayer ios6 drawrect