layoutSubviews方法在iOS開(kāi)發(fā)中是用來(lái)布局view的子控件的一個(gè)常用方法茴扁,那么它何時(shí)會(huì)被調(diào)用呢隧魄?
下面我總結(jié)了幾種情況茫孔,都是我一一驗(yàn)證過(guò)的库车。
1巨柒、addSubview時(shí)會(huì)被調(diào)用柠衍。
self.redView = [[RedView alloc] initWithFrame:CGRectMake(0, 150, 300, 350)];
[self.view addSubview:self.redView];
此時(shí),redView中的layoutSubviews方法會(huì)被調(diào)用一次珍坊。
2牺勾、外部修改redView的frame會(huì)被調(diào)用。
self.redView.frame = CGRectMake(0, 250, 400, 350);
此時(shí)阵漏,redView中的layoutSubviews方法會(huì)被調(diào)用一次,并且只會(huì)調(diào)用一次履怯,只有當(dāng)frame再次被修改時(shí)才會(huì)再次調(diào)用layoutSubviews方法。還有需要注意叹洲,只有redView的size被改變時(shí)才會(huì)調(diào)用layoutSubviews方法柠硕,只是修改original屬性是不會(huì)調(diào)用的。
3运提、redView調(diào)用[self setNeedsLayout]方法時(shí)會(huì)調(diào)用layoutSubviews方法蝗柔。
4民泵、直接調(diào)用layoutSubviews方法。
5洪灯、有些文章說(shuō)滑動(dòng)UIScrollView的時(shí)候會(huì)調(diào)用layoutSubviews方法竟痰,我自己驗(yàn)證是不會(huì)調(diào)用的掏呼。
6、有些文章說(shuō)旋轉(zhuǎn)Screen會(huì)調(diào)用layoutSubviews方法憎夷,我自己驗(yàn)證是不會(huì)調(diào)用的。