在子视图之上绘制drawRect

40

我已经继承了UIView并添加了一个drawRect方法。然后我使用此自定义类定义一个视图并添加其子视图。

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

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

这种可能吗?


请举个例子(可能包括图片)说明您想要实现的内容。听起来您想先绘制子视图的内容,然后在其上方绘制“背景”,但我不能确定。 - jrturton
很棒的问题,感谢您保持简洁。 - Dan Rosenstark
2个回答

30

子视图始终会被绘制在其父视图的上方。

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

例如,如果您的自定义视图是一个网格覆盖层,应该位于所有其他视图的顶部。自定义视图必须是非不透明的,并具有清晰的背景颜色。


10

不,子视图总是出现在它们的容器之上。当然,你可以使子视图(部分)透明。

如果你想在其上方绘制,将另一个透明的子视图放置在容器中作为最顶层的子视图,并在其中绘制。如果你禁用了它的用户交互,它就不会干扰你的触摸处理。


1
值得注意的是,这种强制重构(到新的UIView或视图)在大多数情况下都有助于可读性。+1 - Dan Rosenstark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接