1

私は11個のサブビュー(7つのボタン、2つのラベル、2つのイメージビュー)を含むuiview(「popupVw」という名前の親ビュー)をアニメーション化するために取り組んでいます。最初のフレーム サイズは次のとおりです。

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  ;

以下は問題のスクリーングラブです:

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

右上隅の十字ボタンは、アニメーション ポップアップのサブビューです。私が欲しいのは、十字ボタンがアニメーションビューの外にあってはならないということです。たとえば、2 番目のスクリーンショットでは、半十字ボタンのみが表示されます。外側の部分は表示されません。

4

2 に答える 2

2

を使ってみてくださいoptions:UIViewAnimationOptionLayoutSubviews

[UIView animateWithDuration:0.5
                          delay:0.0
                        options:UIViewAnimationOptionLayoutSubviews
                     animations:^{
                         // animate here...
                     }
                     completion:nil];

編集:わかりました。次に、アニメーション ビュー内に別のビュー (coverView と呼びましょう) が必要です。coverView はアニメーション ビューと同じサイズになり、他のすべてのサブビューの上に表示されるため、それらを非表示にします。ビューを開いてアニメーション化するときは、coverView をアニメーション化して非表示にする必要があります。

于 2013-05-26T11:06:40.240 に答える