UIView - 在重新布置子视图之前,不会重新绘制子视图内容。为什么?

时间:2013-04-30 20:38:23

标签: ios objective-c uiview

我在viewDidLoad方法中向视图控制器的根视图添加了一些子视图。不久之后,当一个特定事件发生时,我只是改变其中一个视图的背景颜色。在再次布置子视图(willLayoutSubviews被调用)之前,此更改不可见。如果我更改设备的方向或等待10-20秒,则会发生这种情况。我在做出更改后立即在子视图上调用了setNeedsDisplay,但它没有帮助。

总而言之,我只是想在特定事件发生后更改子视图的背景颜色,并且我希望这些更改可能在一秒左右的时间内在屏幕上显示。我错过了什么?

注意:如果重要,相关视图的超级视图为GLKView

1 个答案:

答案 0 :(得分:2)

确保您只是从主线程进行UI更新。您可以使用performSelectorOnMainThread:withObject:waitUntilDone:dispatch_async(dispatch_get_main_queue(), ^{/* your UI modifying code here */});修复此问题。