我的IB有很多子视图。其中一个是使用自定义drawRect方法的自定义视图。我不明白为什么我的IB中的所有视图都不会显示,直到一个自定义视图完成绘图。理想情况下,我希望自定义视图仍然可以在屏幕上显示其他视图。有一个简单的方法吗?
自定义视图位于层次结构的底部,其他子视图显示在其顶部。
答案 0 :(得分:1)
绘图通常会从前到后进行,因为视图绘制的内容可能需要与其背后的内容合成。可能会对不透明视图(使用-isOpaque
响应YES
的视图)进行例外处理,根据定义,这些视图不依赖于它们背后的内容。
如果绘图需要相当长的时间,则应考虑绘制到主线程外的缓冲区,然后使用该预合成图像更新视图的内容。然后,您将使用UIImageView
周围的包装替换自定义视图,这需要绘制到图像所需的时间,然后更新图像视图显示的图像。 (这基本上是手动双缓冲。)