【问题标题】:drawRect on top of subviews子视图顶部的drawRect
【发布时间】:2011-12-03 10:52:00
【问题描述】:

我将UIView 子类化并添加了drawRect 方法。然后我使用这个自定义类定义一个视图并向它添加子视图。

问题在于drawRect 似乎在子视图下绘制了东西(因此不可见)。

我希望drawRect 绘制的内容出现在我的自定义UIView 的子视图上方。

这可能吗?

【问题讨论】:

  • 请举例说明您想要达到的目标(可能是图片?)。听起来您想先绘制子视图内容,然后再绘制“背景”,但我不能确定。
  • 好问题,感谢您保持简洁。

标签: ios core-graphics drawrect z-order


【解决方案1】:

子视图将始终绘制在其父视图的“顶部”。

根据您的具体要求,您可能需要一个普通的 UIView 作为背景/容器视图,其中包含您现有的子视图,然后将您的自定义视图作为另一个子视图添加到最顶部,因此它具有最高Z 顺序。

例如,如果您的自定义视图是一个网格叠加层,它应该位于其他所有内容之上,这将起作用。自定义视图必须是不透明的,具有清晰的背景颜色。

【讨论】:

    【解决方案2】:

    不,子视图总是出现在它们的容器上方。当然,没有什么能阻止您使子视图(部分)透明。

    如果要在上面绘制,请将另一个透明子视图作为最顶层的子视图放入容器中并在该子视图中绘制。如果你禁用它的用户交互,它不会干扰你的触摸处理。

    【讨论】:

    • 另外值得注意的是,在大多数情况下,这种强制重构(到新的 UIView 或视图)将有助于提高可读性。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多