私の iPhone OS アプリケーションでは、画面の特定の部分を再配置するために、デバイスの向きの変化を監視する必要があります。私が使用したアプローチはCGRect frame = [UIScreen mainScreen].applicationFrame
、画面サイズを取得するために使用し、そこから他のコントロールのサイズおよび/または位置を計算することでした(私も試しself.view.frame
ました)。
ここまでのテストはすべてポートレート モードで行ったので、主な機能のプログラミングに集中し、後でランドスケープの調整を行うことができました。ここで問題が発生します。-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
先に進む前にサイズを確認するためにいくつかのログを追加しましたが、明らかに幅と高さの値が「間違っています」(一見すると値が意味をなさないため、「間違っている」と言います) .
いくつかのロギングの出力は次のとおりです。
- 回転: 横向き [w=300.000000, h=480.000000]
- 回転: 縦 [w=320.000000, h=460.000000]
ランドスケープの "w" と "h" の値が反転しているように見えます。w=480 と h=300 だと思っていました。
私は何を間違っていますか?デバッグに使用したコードは以下のとおりです。
-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
CGRect frame = [UIScreen mainScreen].applicationFrame;
CGSize size = frame.size;
NSLog(@"%@", [NSString stringWithFormat:@"Rotation: %s [w=%f, h=%f]",
UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? "Portrait" : "Landscape",
size.width, size.height]);
}