繁体   English   中英

在iOS 9.2.1 / XCode 7.2中执行segue时出现零星的黑屏

[英]Sporadic black screen when performing segue in iOS 9.2.1 / XCode 7.2

Upvoters:如果你也看到过这个问题,你可以告诉我吗?

当我尝试从某个场景上的按钮模态启动视图控制器时,我看到的问题大约每15次发生一次。

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

症状如下:

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

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

  • 目前屏幕上有3个包含视图的滚动视图。 所有三个子视图都有自己的drawRect。 事实证明,当错误发生时,不会调用其中一个drawRects,导致显示灰色背景。 有斑点的视图确实运行,但我不知道为什么它在视图调试中看起来像那样。
  • XCode中没有警告。 没有关于NSLayout约束或表示重叠的内容。
  • 在prepareForSegue函数的目标视图控制器上设置了两个字段。
  • segue是通过故事板从时间按钮启动的。 没有丢失或额外的插座,并且它正确命名为准备功能以捕获它。

该问题是零星的,但如果您连续多次启动/取消,则会可靠地发生。

这是屏幕抓取。 我不会告诉你黑屏。 它只是黑色的载体和时间。

发射屏幕

XCode视图调试器在黑屏期间显示的内容

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

灰色区域应该由大背景填充,并绘制线条。 事实证明,drawBackground的朴素实现会导致内存大小超过200MB。 我用CSTiledLayer替换它,现在需要几MB。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM