【问题标题】:iOS Layer Rendering QueueiOS 图层渲染队列
【发布时间】:2013-01-15 00:07:09
【问题描述】:

我遇到了我还不理解的行为。我的代码基本上是这样做的:

  • 使用一些自定义 UIView 内容创建视图(带有 drawRect 的视图),此视图还没有超级视图,因此 Quartz 子系统不会将其称为 [图层显示]。

  • 然后我做一个视图的renderInContext。

  • 问题是有时视图完美渲染,有时它不渲染子视图并且不调用它们的drawRect。

为什么会这样?我错过了一些东西。我其实知道同一层不能同时渲染。但是这个视图没有在主线程上渲染,因为它没有超级视图。

非常感谢

【问题讨论】:

  • 我认为问题与后备存储缓冲区有关,但我不确定。
  • 您不需要超级视图即可在主线程上呈现。但是,如果你不在主线程上,几乎没有 UIView 操作可以正常工作。

标签: iphone ios quartz-graphics layer


【解决方案1】:

很有趣,不看源代码几乎是不可能理解的,但我有一些提示可以使用。

  • 将视图添加到超级视图,将其 alpha 设置为 0
  • 尝试将其添加到父视图之外
  • 尝试在该视图上调用 -setNeedsDiplay

我不知道它们是否有效,渲染系统不是一项简单的任务,但我会试一试。我没有得到的一件事,通常子视图被添加为子视图,但你说你做在drawrect里面有一些东西。不要在drawRect中添加子视图drawRect and addSubview: custom drawing affects which views?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多