6

いくつかのサブビューを含むビューを折りたたむためのアニメーションを作成しようとしています。

[UIView beginAnimations:@"advancedAnimations" context:nil];
[UIView setAnimationDuration:3.0];

CGRect aFrame = aView.frame;
aView.size.height = 0;
aView.frame = aFrame;

[UIView commitAnimations];

このアニメーションは正常に機能していますが、aViewのみです。サブビューは期待どおりに折りたたまれません。サブビューも折りたたむにはどうすればよいですか?さらに、折りたたんだ後に元のサイズを再計算する方法はありますか?

THX

4

4 に答える 4

5

サブビューに自動サイズ変更マスクを適用するのを忘れている可能性があります。もし、するなら

for (UIView *subview in aView.subviews) {
    subview.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin);
}

動作するはずです。

しかし、ラメラスが言ったように、個人的に私は使用します

aView.transform = CGAffineTransformMakeScale(1.0,0.0);
于 2012-05-15T16:06:38.577 に答える
4

これを使ってアニメーション化してみてください:

aView.transform = CGAffineTransformMakeScale(1.0,0.0);
于 2012-05-15T15:40:12.190 に答える
0

経験に基づいた推測:

[UIView beginAnimations:@"advancedAnimations" context:nil];
[UIView setAnimationDuration:3.0];

CGRect aFrame = aView.frame;
aView.size.height = 0;
aView.frame = aFrame;

for (UIView *subview in aView.subviews) {
    CGRect frame = subview.frame;
    frame.size.height = 0;
    subview.frame = frame;
}

[UIView commitAnimations];

さらに、崩壊後に元のサイズを再計算する方法はありますか?

おそらく、折りたたむ前に高さを保存したいでしょう。

于 2012-05-15T15:42:13.840 に答える