0

奇妙な行動だと思うものに遭遇しました。誰かがこれを明確にできるといいですね。

viewDidLoad では、最初にこのように UIView 境界の高さと幅を出力します

-(void) viewDidLoad
{
    NSLog(@"WxH = %fx%f", self.view.bounds.size.width,self.view.bounds.size.height);

}

これは次を印刷します: WxH = 320.000000x548.000000

ここで、ビュー コントローラーを横向きに回転させてから縦向きに戻し、同じ高さと幅で印刷するとします。このような:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)x
                                         duration:(NSTimeInterval)duration
{

    // If the orientation is rotating to Portrait mode...
    if (UIInterfaceOrientationIsPortrait(x))
    {
        NSLog(@"WxH = %fx%f", self.view.bounds.size.width,self.view.bounds.size.height);


    }
    else // If the orientation is rotating to Landscape mode
    {  

    }

}

この後、回転するたびに、上記のメソッドが印刷WxH = 320.000000x460.000000されます (最初に 548 を印刷したときと同じようにポートレート モードであっても) 高さが 460 に変更されたのはなぜですか? (その後ずっとこのまま)

4

2 に答える 2

0

縦長の iphone の高さ 合計 480、ステータス バーの 20、self.view の残りの 460。

次のようなより良い方法でログを表示できます

NSLog(@"%@",NSStringFromCGRect(self.view.bounds));

そう見えるから

解像度はピクセルではなくポイントです。Retina または非 Retina など、あらゆるデバイスで実行できるように、コードはポイントを使用する必要があります。(明確にするために、Retina ディスプレイでは、各画面ピクセルは 0.5x0.5 ポイントです。非 Retina ディスプレイでは、ピクセルはそのサイズの 2 倍、1x1 ポイントです)

于 2013-07-26T11:31:13.047 に答える