私は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 番目のスクリーンショットでは、半十字ボタンのみが表示されます。外側の部分は表示されません。