2012-04-13 15 views
0

現在、ここでは何が起こっているのですか?私がポートレートモードで、新しいmodalViewControllerを表示してから、landscapeに回転すると、autoResizingは完全に機能し、すべてが素晴らしいように見えます。しかし、私がランドスケープになっていて、新しいmodalViewControllerを提示すると、autoResizingは機能せず、すべてがファニーに見えます。なぜこのようなことが起きるのか、考えられる人はいますか?私はすべてを試したことが切望している。UIView autoResizingが動作することがあります

これを修正する方法は、私が肖像画のときにどのコードがシステムから呼び出されたのかを把握することです。私のmodalViewがランドスケープで表示されている場合は、正確なコードを呼び出すことができます。私はlayoutIfNeededとsetNeedsDisplayを試しましたが、何もしません。私はまた、再描画のためにcontentModeを設定しようとしましたが、それは助けにはなりません。

私はモーダルビュー

if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) 
{ 
    NSLog(@"is landscape, width:%f", self.view.frame.size.width); 
} 

のための私のviewDidLoadでこれを持って、それが480

+0

コードしてください。 – CodaFi

+0

概念的な質問の多く..私は実際に役に立つと思うコードを知ることができません。 – Snowman

+1

あなたは概念的な回答をしなければなりません。 – CodaFi

答えて

2

UIViewAutoResizingMasksあるべきとき、これは、私が風景にいるにもかかわらず、320を出力し、我々はを参照してください何ですか'支柱'と 'ばね'として。これを考えてみましょう。小さな正方形の内側に大きな正方形があります。その正方形が完全に中央に収まるようにするには、大きな正方形の各内側の端から一定の幅を設定して、それを拘束する必要があります。これらはストラットです。

スプリングは、回転中にUIViewと同じように機能します。私たちの視点が画面の一番下にあり、中央に位置しなければならないとしましょう。ビューが460 pxから320 pxに回転すると、画面の現在の寸法との相対的な位置が同じになります。

これを覚えておいて、ビューがポートレート(すべてのUIViewControllerがそうです)にロードされているにもかかわらず、実際の向きがランドスケープであると、ビューが「混乱」して混乱を招く可能性があります。あなたが絶対に必要な場合(そして、これが最後の手段であることを強調することはできません)、iOS 5.xの+ attemptRotationToDeviceOrientarionを使用してください。

関連する問題