2011-04-19 11 views
3

2つのモード(縦1つと横1つ)を共有するには、ビューコントローラ(ipad上)が必要です。実際、私はUISplitViewControllerの機能を模倣したいと思っていますが、トップレベルのView Controllerとしては使えないようにしたいと考えています。 HIGガイドラインを除いて、私は方向性の間で意見を交換している誰もが辿り着くと思うという一般的な問題があります。iosで回転するときにサブビューを変更する

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. 

誰もがこの上で提供する任意の洞察力を持っていますか?

ありがとうございます!

答えて

5

代わりにwillAnimateRotationToInterfaceOrientation:duration:をお試しください。

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

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

+0

awesome、willAnimateRotationToInterfaceOrientationが機能しました! – Ying

+0

とbtwでは、ビューが削除され、向きに基づいて画面に追加されるため、自動サイズ変更マスクは私にとっては機能しません。しかし、私は彼らと一緒に微笑んで、それがうまくいくかどうかを見ます。 – Ying

関連する問題