您是否必须在setNeedsDisplay
上致电setFrame
后明确致电UIView
,如以下情况所示?
view1.frame = frame;
[view1 setNeedsDisplay];
[view2 setFrame:frame];
答案 0 :(得分:10)
简短回答:否
当您需要调用方法setNeedsDisplay
时,根据drawRect
调用UIView Class Reference
.-
自动更改框架矩形会重新显示接收器 不调用drawRect:方法。如果你想要drawRect: 当框架矩形改变时调用的方法,设置contentMode 属性为UIViewContentModeRedraw。
答案 1 :(得分:0)
答案是肯定而否两者都取决于具体情况,
案例1 。如果你通过覆盖a中的drawRect方法来绘制一些东西 自定义视图,即UIView的子类,然后您将需要调用 setNeedsDisplay,否则将获得该绘图或该模式 根据新框架拉伸并且看起来很糟糕。如果你想重绘它,请调用setNeedsDisplay。
案例2 。如果你有的话 绘制一些看起来很好的东西,即使它被拉伸, 我认为这是一种罕见的可能性,
或者你根本不覆盖drawRect,然后你不需要打电话 setNeedsDisplay。强>