三种方法都用于刷新子对象布局,解释分别如下:
-layoutSubviews方法:这个方法,默认没有做任何事情,需要子类进行重写
-setNeedsLayout方法: 标记为需要重新布局,异步调用layoutIfNeeded刷新布局,不立即刷新,但layoutSubviews一定会被调用-layoutIfNeeded方法:如果,有需要刷新的标记,立即调用layoutSubviews进行布局(如果没有标记,不会调用layoutSubviews)
相互之间的关系,setNeedsLayout只进行标记,layoutIfNeeded判断是否有刷新标记。如果有标记就会调用layoutSubviews布局。