【问题标题】:Sporadic black screen when performing segue in iOS 9.2.1 / XCode 7.2在 iOS 9.2.1 / XCode 7.2 中执行 segue 时出现零星黑屏
【发布时间】:2016-02-23 15:09:16
【问题描述】:

支持者:如果您也遇到过这个问题,能否告诉我?

当我尝试从某个场景上的按钮以模态方式启动视图控制器时,我看到的问题大约每 15 次就会出现一次。

这是在 iOS 9.2.1 和 XCode 7.2 上完成的,但不清楚它发生在哪个版本上。把iOS版本改下来并不容易。

症状如下:

  1. 目标视图控制器在手机上不可见。相反,顶部栏(带有载体的栏)变黑,有时它会闪烁,因此整个屏幕完全是黑色的。启动视图控制器可见,但没有响应。
  2. 发生这种情况时,我会转到 XCode 屏幕并查看调试。值得注意的是,这显示了目标屏幕,几乎与它应该看起来的一样。唯一的区别是其中一个视图没有完成它的drawRect,而其他视图之一看起来全是斑点。但当然,它与手机显示的内容完全不符。
  3. 目标屏幕上的取消按钮似乎仍然有效,因为当我按下它应该在的位置时,应用程序继续运行。如果我尝试使用按钮重新启动屏幕,但它再次不起作用。因此,一旦发生这种情况,该会话的屏幕就会停止工作,需要终止并重新启动应用程序。

提示不多,但这些信息可能会有所帮助:

  • 在目标屏幕上有 3 个包含视图的滚动视图。所有三个子视图都有自己的 drawRect。事实证明,当错误发生时,其中一个 drawRects 没有被调用,导致显示灰色背景。斑点视图确实运行,但我不知道为什么它在视图调试中看起来如此。
  • XCode 中没有警告。与 NSLayout 约束或演示重叠无关。
  • 在 prepareForSegue 函数的目标视图控制器上设置了两个字段。
  • segue 通过情节提要从时间按钮启动。没有丢失或额外的出口,并且它被正确命名以便准备函数捕获它。

此问题是偶发的,但如果您连续多次启动/取消,就会可靠地发生。

这是屏幕截图。我不会给你看黑屏。运营商和时间都是黑色的。

【问题讨论】:

  • 那是 collectionView 的第二个屏幕截图吗?
  • 第二个屏幕底部有一个collectionView,有3个日期,但大部分是3个包含自定义绘图的scrollView。灰色区域,左侧是日期,顶部是时间。
  • 请检查控件的 Z 顺序。我观察到 XCODE 中有一个错误,它带来了一些控制权。我通常会更改一个标签的订单并再次恢复原样。有时这似乎可以解决它。可能会解决您的问题,但如果不看代码,我很难回答。
  • z-order 会如何影响整个屏幕的绘制?
  • 在最后一个屏幕你有 20:00 pm :D :P

标签: ios iphone segue


【解决方案1】:

我已经解决了。检查内存使用情况非常有用。

灰色区域应该由画有线条的大背景填充。事实证明,drawBackground 的幼稚实现导致内存大小膨胀到超过 200MB。我用 CSTiledLayer 替换了它,现在它需要几 MB。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2015-11-18
    • 2017-01-29
    • 2016-03-31
    • 1970-01-01
    相关资源
    最近更新 更多