0

私は、ネストされたタイルビューを含むビューをプログラムで作成し、回転時に再描画/サイズ変更するための、優れた完全な例/チュートリアルリンクまたはデモを求めています。これは、ルートビューが回転時に回転し、ネストされたすべてのビューが回転およびサイズ変更されるようにトリガーする必要があることを意味します。

たとえば、40個の長方形のビューがタイル状に配置されたビューがあるとします。iphone/ ipadを回転させ、40個のネストされたビューも回転させます(ハードではありません)が、より重要なのはサイズ変更と移動です。4x10グリッドは5x8に変更される場合があります。

これをプログラムで実行することはできますが、x/yの境界などがすべてオフキルターであることがわかりました。

「絵コンテを使うだけ」についてはコメントしないでください...

ありがとう!

4

1 に答える 1

2

希望/期待どおりに機能させるには、多くの場合、少し手間がかかることがわかりました。考慮すべきことは、回転を拾うために使用しているコールバックです.3つあり、それらはわずかに異なる目的を果たします.

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration

これはおそらく使用したいものです。この時点でクエリを実行するとself.view.frame(またはスーパーフレームを取得するために使用するものは何でも)、回転が完了した後のフレームの値が返されます。また、自動サイズ変更も考慮しており、回転が行われる前にこれを提供します(つまり、まだ目に見える効果はありません)。これを使用して、ビューのすべての新しい位置とサイズを計算し、それらを設定します。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration

これは、回転が始まろうとしていることを示しますが、現在の向きのフレームを返します。これは、ビューの非表示/表示には役立ちますが、新しい位置の計算には役立ちません!

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

これは、回転が完了すると呼び出され、新しいサイズとフレームを返しますが、ここでビューの位置を変更しようとすると、回転が完了した後に飛び跳ねているように見えます。

これは本当の雌犬になる可能性があるため、自動サイズ変更で遊ぶこともお勧めします。コードや xib juts で自動サイズ変更を設定して、おかしなことをしないようにすることがあります。

長方形がView Controllerにネストされている場合、それらは自動的に回転するはずです(おそらく、私が追加したと思っただけです)

于 2012-12-12T11:51:22.443 に答える