【发布时间】:2016-02-23 15:09:16
【问题描述】:
支持者:如果您也遇到过这个问题,能否告诉我?
当我尝试从某个场景上的按钮以模态方式启动视图控制器时,我看到的问题大约每 15 次就会出现一次。
这是在 iOS 9.2.1 和 XCode 7.2 上完成的,但不清楚它发生在哪个版本上。把iOS版本改下来并不容易。
症状如下:
- 目标视图控制器在手机上不可见。相反,顶部栏(带有载体的栏)变黑,有时它会闪烁,因此整个屏幕完全是黑色的。启动视图控制器可见,但没有响应。
- 发生这种情况时,我会转到 XCode 屏幕并查看调试。值得注意的是,这显示了目标屏幕,几乎与它应该看起来的一样。唯一的区别是其中一个视图没有完成它的drawRect,而其他视图之一看起来全是斑点。但当然,它与手机显示的内容完全不符。
- 目标屏幕上的取消按钮似乎仍然有效,因为当我按下它应该在的位置时,应用程序继续运行。如果我尝试使用按钮重新启动屏幕,但它再次不起作用。因此,一旦发生这种情况,该会话的屏幕就会停止工作,需要终止并重新启动应用程序。
提示不多,但这些信息可能会有所帮助:
- 在目标屏幕上有 3 个包含视图的滚动视图。所有三个子视图都有自己的 drawRect。事实证明,当错误发生时,其中一个 drawRects 没有被调用,导致显示灰色背景。斑点视图确实运行,但我不知道为什么它在视图调试中看起来如此。
- XCode 中没有警告。与 NSLayout 约束或演示重叠无关。
- 在 prepareForSegue 函数的目标视图控制器上设置了两个字段。
- segue 通过情节提要从时间按钮启动。没有丢失或额外的出口,并且它被正确命名以便准备函数捕获它。
此问题是偶发的,但如果您连续多次启动/取消,就会可靠地发生。
这是屏幕截图。我不会给你看黑屏。运营商和时间都是黑色的。
【问题讨论】:
-
那是 collectionView 的第二个屏幕截图吗?
-
第二个屏幕底部有一个collectionView,有3个日期,但大部分是3个包含自定义绘图的scrollView。灰色区域,左侧是日期,顶部是时间。
-
请检查控件的 Z 顺序。我观察到 XCODE 中有一个错误,它带来了一些控制权。我通常会更改一个标签的订单并再次恢复原样。有时这似乎可以解决它。可能会解决您的问题,但如果不看代码,我很难回答。
-
z-order 会如何影响整个屏幕的绘制?
-
在最后一个屏幕你有 20:00 pm :D :P