iOS视图强制刷新
在iOS程序里,我们如果有一个view需要改变了他的数据,需要强制刷新,比如说,我们在我们的TableViewCell获取到数据的时候,我们需要强制把这个cell刷新一下,来显示我们新的数据,我们就可以使用以下方法。
UIView:
setNeedsLayout()
layoutIfNeeded()
那么这两个有什么区别呢,使用setNeesLayout(),我们在我们一个update cycle中间,只是标记这个view需要更新,而不会强制系统强制的去重新绘制我们的这个view,他会调用我们的layoutSubview,而这个layoutSubview也是我们想要重新设置我们子视图的布局,如果是使用layoutIfNeeded(),我们会强制系统强制刷新我们这个view。
One More thing
我们发现,和上面的setNeedsLayout()方法相似的有一个函数叫做setNeedsDisplay()。那么这两个方法又有什么区别呢?setNeedsDisplay(),主要是为了绘图而存在的,每次调用它,我们会标记为我们的这个view需要重新绘制,在下次我们的绘制周期中,会调用我们的drawRect()方法来绘制我们的视图,你还可以通过setNeedsDisplayInRect(rect: CGRect)这个函数来指定重新绘制的rect.
网友评论