0

今、私は自分のアプリを iPad バージョン専用に書いているときに気付きました。

私の iPad iOS バージョンは iOS5.1です。

はい、データをロードする前に iPad の向きを確認する必要があります。

だから私は次のコードでチェックします。

if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
    {
        self.originalLandScape = CGRectMake(0, 48, 1024, 704);
        self.originalPortrait = CGRectMake(0, 48, 768, 960);

        self.txtView.frame = self.originalLandScape;
    }

    else
    {
        self.originalPortrait = CGRectMake(0, 48, 768, 960);
        self.originalLandScape = CGRectMake(0, 48, 1024, 704);

        self.txtView.frame = self.originalPortrait;
    }

修正サイズを my に設定する必要があるためUITextViewです。

しかし、iPad を横向きにして床に水平に置いた場合、UITextViewサイズを設定するのは正しくないことに気付きました。

しかし、床からiPadを手に取り、Landscape本を読むように手に持っていると、上記のコードが機能します。

その2つに違いはありますか?

解決方法がわかりません。

提案と助けをありがとう。

4

1 に答える 1

1

おっしゃる通りです。iPad の向きは 4 つだけではなく、6 つです。

 UIDeviceOrientationLandscapeLeft
 UIDeviceOrientationLandscapeRight
 UIDeviceOrientationPortrait
 UIDeviceOrientationPortraitUpsideDown
 UIDeviceOrientationFaceUp
 UIDeviceOrientationFaceDown

したがって、あなたのelse条項は、縦向きだけでなく、FaceUp と FaceDown にも適用されます。

あなたが実際に使いたいのはインターフェイスの向きだと思います。これは、デバイスの向きと同じ向きである場合とそうでない場合があります (アプリでサポートされている向きによって異なります)。ただし、特定の向きで UI 要素を正しく描画する場合は、残りのインターフェイスの向きが重要になります。 、デバイスの向きではありません。

インターフェイスの向きは 4 つだけです。

UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown

これらは UIViewController プロパティで取得できinterfaceOrientation、UIKit 関数で確認できますUIInterfaceOrientationIsLandscape()UIInterfaceOrientationIsPortrait()

コードでこれを試してください

if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation))) {
   ...
} else {
   ... 
}
于 2013-09-07T16:22:24.033 に答える