我正在爲包含11個子視圖(7個按鈕,2個標籤,2個圖像視圖)的uiview(父視圖名爲'popupVw')設置動畫。最初幀的大小是:使用不改變子視圖框架大小的動畫更改uiview的框架大小
CGRect Frame = CGRectMake(10, 10 ,320, 0);
&新的幀尺寸是:
CGRect newFrame = CGRectMake(10, 10 ,320, 300);
[UIView animateWithDuration:0.5
animations:^{popupVw.frame = newFrame;}
completion:^(BOOL finished){
// do stuff here after animation finished
}];
所以基本上我改變的視圖的高度爲0〜300。 &然後再從300變爲0。實現show hide動畫。
把它看作屏幕中間的一個彈出窗口,顯示從0到300的高度。此彈出窗口包含子視圖&右上角的關閉按鈕。通過點擊這個關閉按鈕,彈出窗口再次降低到300到0的高度。父彈出視圖正確地顯示動畫。但子視圖在高度增加到最大之前是可見的。 &直到父視圖的高度再次變爲0。所以基本上只有父視圖是動畫&而不是內部視圖。
該動畫在父視圖上正常工作,但子視圖不與父視圖一起動畫。因此,當我將uiview的高度從300更改爲0時,所有子視圖仍然可見&只有父級uiview的高度變爲0.
我是否需要爲它們單獨放置動畫?如果是的話,我怎麼能做到這一點的高度變化?或者還有其他方法可以用來達到相同的效果嗎?
我試過自動調整掩碼。但它不是爲我工作:
pointerImgVw.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin ;
下面是問題的srceengrabs:
在右上角的十字按鈕是動畫彈出的子視圖。我想要的是十字按鈕不應該超出動畫視圖。例如在第二張屏幕截圖中,只有半交叉按鈕應該可見。外側部分不應該可見
嘗試UIViewAutoresizingFlexibleHeight代替。 –
@verbumdei我試過使用UIViewAutoresizingFlexibleHeight,但它只是增加了與父視圖大小的子視圖的高度。我的意思是 。如果parentView的高度從0增加到300,那麼子視圖的高度也在增加。 – stackNeverFlow
你想如何讓子視圖動畫?或者只是設置clipToBounds? –