为什么我的所有 Interface Builder 视图都要等到其中一个视图完成后才加载?

发布于 2024-11-16 00:53:07 字数 177 浏览 0 评论 0原文

我的 IB 有许多子视图。其中之一是具有自定义drawRect方法的自定义视图。我不明白的是,为什么在一个自定义视图完成绘制之前,我的 IB 中的所有视图都不会显示。理想情况下,我希望在自定义视图仍在执行其操作时将其他视图显示在屏幕上。有没有简单的方法可以做到这一点?

自定义视图位于层次结构的底部,其他子视图显示在其顶部。

My IB has a number of subviews. One of these is a custom view with a custom drawRect method. What I do not understand is why all the views in my IB will not display until that one custom view is done drawing. I'd ideally like to have the other views up on the screen while the custom view is still doing its thing. Is there an easy way to do this?

The custom view is is at the bottom of the hierarchy and the other subviews appear on top of it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

美胚控场 2024-11-23 00:53:08

绘制通常从后到前进行,因为视图绘制的内容可能需要与其后面绘制的内容合成。不透明视图(那些用 YES 响应 -isOpaque 的视图)可能是一个例外,根据定义,这些视图不依赖于它们后面绘制的内容。

如果绘制需要相当长的时间,您应该考虑绘制到主线程外部的缓冲区,然后使用该预合成图像更新视图的内容。然后,您可以将自定义视图替换为 UIImageView 周围的包装器,该包装器所花费的时间与绘制图像所需的时间相同,然后更新图像视图显示的图像。 (这基本上是手动双缓冲。)

Drawing generally proceeds back-to-front because what a view draws might need to be composited with what is drawn behind it. An exception might be made for opaque views (those that respond to -isOpaque with YES), which by definition do not depend on the content drawn behind them.

If drawing is taking a considerable amount of time, you should consider drawing to a buffer outside the main thread and then updating the content of the view with that pre-composited image. You would then replace your custom view with a wrapper around a UIImageView, which takes as long as it takes to draw to an image and then updates the image displayed by the image view. (This is basically manual double-buffering.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文