我在应用商店中有近5星评级的应用,但是当iOS 6推出时,应用主视图层次结构中的一些视图开始闪烁。这发生在商店中的应用程序(我在iOS6出来时将其删除)以及模拟器中。iOS 6视图层次结构恶梦
我花了大约14个小时,尝试了100件事,在Xcode中进行调试,但无法获得任何牵引力。子视图消失并重新出现,就像有一个gremlin随机设置可见属性,每个对象每秒最多10次,在一切正常的较长时间之间。
主界面是一个拨号,用户可以旋转,在一个图层上使用3d转换来旋转它。我发现的唯一模式是4个消失的子视图中的3个一起消失,就好像锁定为一个,当拨盘旋转到某些离散位置时。
第4消失的子视图应该是一个静态图像,它闪烁着,没有明显的模式。
我很想知道如何调试这个问题。这不是内存警告,执行额外的[setNeedsToDisplay]似乎没有效果。我开始认为苹果公司在iOS6中打破了一些东西,但我找不到任何人在讨论这些问题。
这里是主视图中的子视图和CALayers的层次结构的细分:
- 我的层次结构包含2个基地CALayers是罚款。
- 上面是一个非常大的自定义UIView(使用drawRect)和一个闪烁在一起的大型UIImageVIew,当底部 被旋转到某些位置时总是闪烁。只有最下面的一个正在旋转 。
- 上面是一个不闪烁的自定义文本绘图UIView。
- 上面是一个小的红色图钉UIImageView,它在 处闪烁,与上述2个视图完全相同。这是一个香草 UIImageView;没有转换或子类或自定义绘图代码!而且它仍然具有相同的闪烁。
- 在上面是一个似乎无时无刻不在工作的无形UIButton。
- 上面是一个UIImageView那就是闪烁关闭 和不断的小图形,无关(我说联系的,因为他们喜欢消失 一起)的 其他3“链接”层的基于旋转的闪烁。
您是否尝试通过覆盖'isHidden','alpha'和layers方法改变命令的setter来添加一些日志消息?苹果对UIKit做了一些改变,这是真的,但这并不意味着你不是那个对这个问题负责的人。就像他们在'UITouch.h'上有警告说'任何UIKit类的实例变量都应该被认为是私有的......'并且猜测是什么,这些变量在iOs6上不再公开。 –
我做了你的建议,并增加了setHidden覆盖:和setAlpha:在我的UIView子类有问题,并设置每个断点 - 他们从来没有被击中。不知道你对UIKit的改变意味着什么。 – avance