0

現在、これが起こっていることです。ポートレート モードで、新しい modalViewController を提示し、次にランドスケープに回転すると、autoResizing が完全に機能し、すべてが見栄えがします。ただし、横向きで新しい modalViewController を提示すると、autoResizing が機能せず、すべてがファンキーに見えます。なぜこれが起こっているのかについて、考えられるアイデアを考えられる人はいますか? 私は必死です私はすべてを試しました。

おそらく、これを修正する方法は、私が縦向きで横向きになったときに、システムによってどのコードが呼び出されるかを把握することです。私の modalView が横向きに表示されている場合は、その正確なコードを呼び出すことができます。layoutIfNeeded と setNeedsDisplay を試しましたが、何もしません。また、contentMode を redraw-doesn't に設定しようとしましたが、役に立ちません。

モーダルビューのviewDidLoadにこれがあります

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

これは、480 である必要があるときに、ランドスケープにいる場合でも 320 を出力します。

4

1 に答える 1

2

UIViewAutoResizingMask は、「ストラット」および「スプリング」と呼ばれるものです。これを考えてみてください: 中に小さな正方形がある大きな正方形があります。その正方形が完全に中央に配置されるようにするには、大きな正方形の内側の各エッジから一定の幅を設定して、それを制約する必要があります。これらはストラットです。

一方、スプリングは回転中の UIView のように機能します。ビューが画面の下部にとどまり、中央に整列する必要があるとしましょう。ビューが 460 ピクセルから 320 ピクセルに回転したときに、画面の現在変更された寸法に対して同じ位置を維持するように、トップ スプリングを柔軟に保ちたいと考えています。

これを念頭に置いて、(すべての UIViewController がそうであるように) ビューが縦向きに読み込まれているが、実際の向きが横向きの場合、ビューが「混乱」し、一種の乱雑なハイブリッド向きタイプのビューを維持する可能性があります。絶対に必要な場合 (そして、これが最後の手段であることを強調することはできません) 事前に方向の変更を強制する場合は、iOS 5.x の +attemptRotationToDeviceOrientarion を使用してください。

于 2012-04-13T04:42:45.397 に答える