在UIView上调用setFrame后,是否必须显式调用setNeedsDisplay?

时间:2013-04-11 22:29:06

标签: ios uiview

您是否必须在setNeedsDisplay上致电setFrame后明确致电UIView,如以下情况所示?

view1.frame = frame;
[view1 setNeedsDisplay];

[view2 setFrame:frame];

2 个答案:

答案 0 :(得分:10)

简短回答:

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

  

自动更改框架矩形会重新显示接收器   不调用drawRect:方法。如果你想要drawRect:   当框架矩形改变时调用的方法,设置contentMode   属性为UIViewContentModeRedraw。

答案 1 :(得分:0)

答案是肯定而否两者都取决于具体情况,

案例1 。如果你通过覆盖a中的drawRect方法来绘制一些东西     自定义视图,即UIView的子类,然后您将需要调用     setNeedsDisplay,否则将获得该绘图或该模式     根据新框架拉伸并且看起来很糟糕。如果你想重绘它,请调用setNeedsDisplay。

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

或者你根本不覆盖drawRect,然后你不需要打电话     setNeedsDisplay。