如下情况所示,是否必须在调用后显式调用setNeedsDisplay
?setFrame
UIView
view1.frame = frame;
[view1 setNeedsDisplay];
[view2 setFrame:frame];
简短的回答:没有
您setNeedsDisplay
在需要调用方法时drawRect
调用,并根据UIView Class Reference
.-
更改框架矩形会自动重新显示接收器,而无需调用 drawRect: 方法。如果您希望在框架矩形更改时调用 drawRect: 方法,请将 contentMode 属性设置为 UIViewContentModeRedraw。
答案是Yes和No都取决于情况,
案例1。如果您通过覆盖自定义视图(即 UIView 的子类)中的 drawRect 方法来绘制某些东西,那么您将需要调用 setNeedsDisplay,否则该绘图或该图案将根据新框架被拉伸并且看起来很糟糕。如果要重绘,请调用 setNeedsDisplay。
案例 2。如果你画的东西看起来很好,即使它被拉伸了,我认为这是一种罕见的可能性,
或者你根本不覆盖drawRect,那么你不需要调用setNeedsDisplay。