我的问题与这个Not drawing outside bounds when clipToBounds=NO非常相似,它没有得到明确的答案。
基本上我有一个UIView,我想从它的中心到屏幕的边缘画一条线。计算这些点的位置很容易,使用[self convertPoint:(CGPoint){0,0} fromView:[self superview]];
(它可以找到相对于我的视图的superview的原点。但是,当我从视图的drawRect中绘制一条线时:它在我的视图范围内被裁剪。
有没有一种方法可以在我的视图边界之外绘制?我尝试过更改clipsToBounds属性,但似乎没有任何效果。
我不能从superview中画出我的线条,因为我需要用多个视图来做这件事,其中一些会在其他视图的前面。从superview的drawRect中找出图层似乎不是一个好主意。
类似地,我不认为我可以仅仅调整我的视图的边界来包括整个屏幕,因为我的视图需要动态地调整大小...边界必须很大(>20,000点平方)才能起作用。
发布于 2010-11-29 12:52:25
我不建议在视图边界之外进行绘制。视图需要自动调整大小以包含图形,或者需要具有透明的重叠视图。或者两者都有。我想不出任何一种情况是这两种情况都不能涵盖的,但我可能缺乏想象力。=)
可能当前正在发生的情况是,当超级视图被重新绘制时,它会告诉超级视图它需要重新绘制,从而导致擦除您在外部进行的绘制。已经有一段时间了,任何知识更丰富的人都可以(应该!)如果我错了,请在这里纠正我。
我不知道"Quartz Debug“(来自标准的apple developer tools install,/Developer/Applications/Performance Tools/Quartz Debug
)是否可以在模拟器中运行,但值得一试。它有一个模式,可以显示重绘发生的时间和频率,以及边框和可选的刷新延迟。
你可以按你的要求去做,但是每次你离开子视图的边界时,你需要强制重绘子视图,这意味着你的超级视图需要在它的draw函数中手动绘制它的子视图。从本质上讲,你将抛弃苹果的绘图范例,只是简单地让你的子视图表现得像你的主视图的绘图扩展。
此外,如果您的范围非常动态,您可能需要考虑绘制屏幕或超级视图的百分比,而不是以点为单位,编写代码可能更有意义。
https://stackoverflow.com/questions/4300824
复制相似问题