iOS tipsSwift Tips首页投稿(暂停使用,暂停投稿)

OC & Swift 布局子控件

2016-03-14  本文已影响523人  coderYJ
 drawRect:(CGRect)rect方法:重写这个方法,在这里绘图setNeedsDisplay方法:标记为需要重绘,异步调用drawRect 
setNeedsDisplayInRect:(CGRect)rect,标记为需要在哪个范围重绘

-3.sizeToFit

sizeToFit会自动调用sizeThatFits方法;
sizeToFit不应该在子类中被重写,应该重写sizeThatFits
sizeThatFits传入的参数是当前的size,返回一个适合的size
sizeToFit可以被手动直接调用
sizeToFit和sizeThatFits方法都没有递归,对subviews也不负责,只负责自己
layoutSubviews对subviews重新布局
layoutSubviews方法调用先于drawRect
setNeedsLayout标上一个需要被重新布局的标记,一般在屏幕被刷新的时候布局
layoutIfNeeded方法如其名(在需要的时候调用layoutSubviews),UIKit会判断该receiver是否需要layout.根据Apple官方文档
layoutIfNeeded遍历的不是superview链,应该是subviews链
提示
setNeedDisplay后系统是需要等到合适时机到达才会进行drawRect,
假如在setNeedDisplay后在主线程进行了大量运算,
那么drawRect会被一直找不到时机,直到这些运算完成。
理想的刷新率的1/60秒,
但如果因为某些原因让drawRect延迟了,那么画面就会卡。
你这直接在主线程sleep,所以drawRect也压后了。

iPhone 的刷新频率是60hz,也就是每1/60秒刷新一次,如果调用setNeedsLayout,系统将在下一次刷屏幕刷新的时候调用layoutSubviews

上一篇下一篇

猜你喜欢

热点阅读