文/松果果(簡(jiǎn)書作者)
原文鏈接:http://www.reibang.com/p/438bcf8e3e53
著作權(quán)歸作者所有称勋,轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),并標(biāo)注“簡(jiǎn)書作者”赡鲜。
-(void)setNeedsLayout:
在receiver標(biāo)上一個(gè)需要被重新布局的標(biāo)記,在系統(tǒng)runloop的下一個(gè)周期自動(dòng)調(diào)用layoutSubviews
- (void)layoutIfNeeded:
方法如其名蝇庭,UIKit會(huì)判斷該receiver是否需要layout.根據(jù)Apple官方文檔,layoutIfNeeded方法應(yīng)該是這樣的layoutIfNeeded遍歷的不是superview鏈捡硅,應(yīng)該是subviews鏈哮内。
- (void)layoutSubviews:
這是核心函數(shù)壮韭,最終的目的就是調(diào)用該函數(shù),開發(fā)者不能調(diào)用直接調(diào)用該函數(shù)琳拨,但可以重寫該函數(shù),來加入些自己的代碼狱庇。該函數(shù)只會(huì)進(jìn)行位置,視圖大小的數(shù)字計(jì)算密任,并不會(huì)引起屏幕的繪制。
(void)setNeedsDisplay:
在receiver標(biāo)上一個(gè)需要被重新繪圖的標(biāo)記浪讳,在下一個(gè)draw周期自動(dòng)重繪,iphone device的刷新頻率是60hz口猜,也就是1/60秒后重繪;(void)setNeedsDisplayInRect:(CGRect)rect:
不但設(shè)置了flag济炎,而且詳細(xì)規(guī)定了需要刷新的區(qū)域淌实。(void)drawRect:(CGRect)rect:
這是核心函數(shù)冻辩,最終導(dǎo)致顯示到屏幕上拆祈。開發(fā)人員不可以直接調(diào)用該函數(shù),只能重寫該函數(shù)放坏,額外做一些我們想做的事。是對(duì)receiver的重繪钧敞,能獲得context麸粮。