当用户与在其下面显示presentModalViewController:
的视图进行互动时,如何实时更新卷曲视图?
我想要的行为:
想象一下,如果在地图中点击地图,卫星,混合没有自动展开,只是更新了显示。
我能够通知设置控制器中的某些内容已更改回主视图控制器。主视图控制器可以更新并发信号通知它应该重绘部分内容,但实际更新屏幕是间歇性的。它会连续工作5次,然后不能工作几次,然后连续工作5次。因此,关闭模态视图总是会捕获下面的视图,所以我假设我的视图的渲染图像有时会被缓存或者尽管我的请求没有被重绘。但我想不出一种方法来验证这一点。
这在设备和模拟器上都会发生。
答案 0 :(得分:1)
虽然这种行为可能有多种根本原因,但这是我见过的常见问题导致UIKit视图的“延迟”或“间歇”更新。
如果更新您的展示视图(或呈现的视图)的语句在主队列以外的调度队列中运行,则UIKit可能会在实际UI更新中产生不一致的结果和时间。您通常可以通过在更新UI的语句上放置断点并检查Xcode的左侧调试器视图中显示的“队列”的名称来判断。它应该是'com.apple.main-thread'。如果不是,那可能是你的问题。这可能发生在很多委托方法中,例如网络API。
尝试将您的UI更新包装在: dispatch_async(dispatch_get_main_queue(),^(){...});并查看是否有帮助!您应该只在需要时执行此操作,并始终注意使用块安全技术。
我在iOS 7.0.3的全新通用应用程序中使用iPad模拟器进行了测试,该模拟器具有使用部分卷曲过渡呈现的视图控制器。我能够复制原始问题,包括间歇性更新和“快照”更新,当在上面提供的代码中使用后台队列解除显示的视图时。一旦我切换到主队列,一切都工作正常。
如果这有帮助或者是否存在其他问题,请告诉我们。)