簡體   English   中英

通過自動調整子視圖動畫UIView幀大小更改

[英]Animating UIView frame size change with autoresizing subviews

我有一個包含兩個子視圖的UIView。 我想用動畫改變superview的幀大小,並讓子視圖的大小根據其自動大小的掩碼而改變。

[UIView beginAnimations:@"Resize" context:nil];
[UIView setAnimationDuration:1.0];
CGRect frame = self.myView.frame;
frame.size.height += 30.0;
self.myView.frame = frame;
[UIView commitAnimations];

視圖self.myView按預期調整大小超過1秒,但子視圖會立即調整大小。 有誰知道為什么會發生這種情況以及我如何讓子視圖動畫調整大小?

從我的谷歌搜索,我認為它可能與contentMode屬性有關。 不幸的是,我不清楚該財產的作用。 任何幫助將非常感激。

雖然在[UIView commitAnimations]之后我會問你在做什么,但是很難讓其他人在沒有看到你的代碼的情況下給你正確的答案。 不過,很高興你明白了。 我建議你使用塊動畫。 通過使用完成塊,它們更容易避免這種類型的錯誤。 例:

[UIView animateWithDuration:1.0
                 animations:^{
                     CGRect frame = self.myView.frame;
                     frame.size.height += 30.0;
                     self.myView.frame = frame;
                 }
                 completion:^(BOOL finished){
                     // whatever you need to do when animations are complete
                 }];

好的,所以我在閱讀了以下問題的答案后想出了問題: 動畫UIView框架,子視圖UIScrollView並不總是動畫

在我安排導致的動畫之后,我基本上做了一些工作 - 在我的每個子視圖上調用layoutSubviews ,這會自動導致這些視圖被安排在動畫的結束點。 通過在完成這項工作后安排我的動畫,我能夠解決我的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM