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