2

如下情况所示,是否必须在调用后显式调用setNeedsDisplaysetFrameUIView

view1.frame = frame;
[view1 setNeedsDisplay];

[view2 setFrame:frame];
4

2 回答 2

10

简短的回答:没有

setNeedsDisplay在需要调用方法时drawRect调用,并根据UIView Class Reference.-

更改框架矩形会自动重新显示接收器,而无需调用 drawRect: 方法。如果您希望在框架矩形更改时调用 drawRect: 方法,请将 contentMode 属性设置为 UIViewContentModeRedraw。

于 2013-04-11T22:35:21.100 回答
0

答案是Yes和No都取决于情况,

案例1。如果您通过覆盖自定义视图(即 UIView 的子类)中的 drawRect 方法来绘制某些东西,那么您将需要调用 setNeedsDisplay,否则该绘图或该图案将根据新框架被拉伸并且看起来很糟糕。如果要重绘,请调用 setNeedsDisplay。

案例 2。如果你画的东西看起来很好,即使它被拉伸了,我认为这是一种罕见的可能性,

或者你根本不覆盖drawRect,那么你不需要调用setNeedsDisplay。

于 2013-06-13T09:24:32.133 回答