UIView子view隨父view同步變化
阿新 • • 發佈:2019-01-08
一般情況下,當對父view做動畫時,我們希望得到父view內所有的子檢視跟隨著同步發生變化,
即如下的效果(注:黑色正方形為父view1,白色正方形為view1的子view2):
但是,當我們什麼也沒有做時,它的效果往往卻不是我們想要的樣子,而是下面這樣...
抱歉 圖片太模糊了,不過大概可以看到子檢視label並沒有按我們需要的那樣跟隨父檢視view(即黑色的做放大動畫的那個檢視),一起同步做放大的動畫。
這是因為沒有給子檢視做自動約束
此時,只需在父檢視中允許子檢視自適應
view1.autoresizesSubviews = YES;
並且在子檢視中新增約束:
label2.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin ;
並且,對子檢視的約束必須寫在
[view1 addSubview:label2];
這句addSubview:程式碼的後面,否則沒有效果。
另外,在比如像我這裡 父檢視view是從無到有這樣一個放大的動畫效果時,
在做動畫前,應先設定父view的寬高為(0.1,0.1),這樣一個很小的數
而不能直接設成(0,0),否則約束也會失效
最後,整個效果就如下圖所示啦: