setNeedsLayout、setNeedsDisplay

setNeedsDisplay會調(diào)用自動調(diào)用drawRect方法,拿到UIGraphicsGetCurrentContext進行繪圖
setNeedsLayout會默認調(diào)用layoutSubViews

1、layoutSubviews方法

根據(jù)蘋果官方幫助文檔對layoutSubviews方法的解釋:
此方法用來重新定義子元素的位置和大小。當(dāng)子類重寫此方法疆导,用來實現(xiàn)UI元素的更精確布局。如果要讓布局重新刷新葛躏,那么就調(diào)用setNeedsLayout是鬼,即setNeedsLayout方法會默認用layoutSubViews方法肤舞。

很多時候系統(tǒng)會自動調(diào)用layoutSubviews方法:
  1.初始化不會觸發(fā)layoutSubviews,但是如果設(shè)置了不為CGRectZero的frame的時候就會觸發(fā)均蜜。
  2.addSubview會觸發(fā)layoutSubviews
  3.設(shè)置view的Frame會觸發(fā)layoutSubviews李剖,當(dāng)然前提是frame的值設(shè)置前后發(fā)生了變化
  4.滾動一個UIScrollView會觸發(fā)layoutSubviews
  5.旋轉(zhuǎn)Screen會觸發(fā)父UIView上的layoutSubviews事件
  6.改變一個UIView大小的時候也會觸發(fā)父UIView上的layoutSubviews事件

注:setNeedsLayout方法并不會立即刷新,立即刷新需要調(diào)用layoutIfNeeded方法囤耳。

2篙顺、setNeedsDisplay方法

與setNeedsLayOut方法相似的方法是setNeedsDisplay方法。該方法在調(diào)用時充择,會自動調(diào)用drawRect方法德玫,drawRect方法主要用來畫圖。

3椎麦、總結(jié)

所以宰僧,當(dāng)需要刷新布局時,用setNeedsLayOut方法观挎;當(dāng)需要重新繪畫時琴儿,調(diào)用setNeedsDisplay方法。

刷新子對象布局

-layoutSubviews方法:這個方法嘁捷,默認沒有做任何事情造成,需要子類進行重寫

-setNeedsLayout方法: 標記為需要重新布局,異步調(diào)用layoutIfNeeded刷新布局雄嚣,不立即刷新晒屎,但layoutSubviews一定會被調(diào)用

-layoutIfNeeded方法:如果有需要刷新的標記,立即調(diào)用layoutSubviews進行布局(如果沒有標記缓升,不會調(diào)用layoutSubviews)

如果要立即刷新鼓鲁,要先調(diào)用[view setNeedsLayout],把標記設(shè)為需要布局港谊,然后馬上調(diào)用[view layoutIfNeeded]坐桩,實現(xiàn)布局

在視圖第一次顯示之前,標記總是“需要刷新”的封锉,可以直接調(diào)用[view layoutIfNeeded]

重繪

-drawRect:(CGRect)rect方法:重寫此方法,執(zhí)行重繪任務(wù)
-setNeedsDisplay方法:標記為需要重繪膘螟,異步調(diào)用drawRect
-setNeedsDisplayInRect:(CGRect)invalidRect方法:標記為需要局部重繪

參考:
http://blog.sina.com.cn/s/blog_a573f7990101cdpe.html
http://blog.csdn.net/meegomeego/article/details/39890385
http://www.cnblogs.com/UncleDraw/p/5685951.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末成福,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子荆残,更是在濱河造成了極大的恐慌奴艾,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件内斯,死亡現(xiàn)場離奇詭異蕴潦,居然都是意外死亡像啼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門潭苞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忽冻,“玉大人,你說我怎么就攤上這事此疹∩希” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵蝗碎,是天一觀的道長湖笨。 經(jīng)常有香客問我,道長蹦骑,這世上最難降的妖魔是什么慈省? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮眠菇,結(jié)果婚禮上边败,老公的妹妹穿的比我還像新娘。我一直安慰自己琼锋,他們只是感情好放闺,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缕坎,像睡著了一般怖侦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谜叹,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天匾寝,我揣著相機與錄音,去河邊找鬼荷腊。 笑死艳悔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的女仰。 我是一名探鬼主播猜年,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疾忍!你這毒婦竟也來了乔外?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤一罩,失蹤者是張志新(化名)和其女友劉穎杨幼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡差购,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年四瘫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片欲逃。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡找蜜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出暖夭,到底是詐尸還是另有隱情锹杈,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布迈着,位于F島的核電站竭望,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏裕菠。R本人自食惡果不足惜咬清,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奴潘。 院中可真熱鬧旧烧,春花似錦、人聲如沸画髓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奈虾。三九已至夺谁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肉微,已是汗流浹背匾鸥。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留碉纳,地道東北人勿负。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像劳曹,于是被迫代替她去往敵國和親奴愉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容