3

縦向きと横向きの2つのモードを共有するには、ビューコントローラー(iPad上)が必要です。実際には、UISplitViewController の機能を模倣したいのですが、トップレベルのビュー コントローラーとしてではなく、使用できるようにしたいと考えています。HIG のガイドラインは別として、方向を切り替えるときに誰もが遭遇する一般的な問題があります。

1)ビュー間のスムーズな遷移を提供するために、didRotateToInterfaceOrientation メソッドの代わりに willRotateToInterfaceOrientation:duration 内でビューの変更 (およびアニメーション) を呼び出したいと思います。問題は、この段階では、ビュー フレームと境界がまだ新しいものに変更されていないため、次のようにフレームを手動で設定する必要があることです。

subview.frame = CGRectMake(0,0,320,768);

より良いものの代わりに、多分:

subview.frame = CGRectMake(0,0,320, self.view.frame.height);

2) さらに、そのような悪ふざけを試みたとしても、ビューがそのサブビューを自動サイズ変更する場合は、まだどこにも行きません。サブビューの自動サイズ変更を無効にすると、次のようなものは機能しなくなります。

subview.frame = self.view.frame; //because then you'd have to always specify the exact rect.

誰かがこれについて提供する洞察を持っていますか?

ありがとう!

4

1 に答える 1

5

willAnimateRotationToInterfaceOrientation:duration:代わりに使用してみてください。

また、サブビューに自動サイズ変更マスクが正しく設定されている場合は、メイン ビューがまだ調整されているかどうかを気にする必要はありません。現在サイズが変更されているため、メイン ビュー内に適切に収まるようにサブビューのサイズを変更するだけで機能します。

layoutSubviews自動サイズ変更マスクを正しく設定していない (または設定できない) 場合は、メイン ビューのメソッドでサイズ変更を処理するコードが既にあるはずです。繰り返しますが、メイン ビューがまだサイズ変更されているかどうかはあまり気にする必要はありません。

于 2011-04-19T14:38:34.667 に答える