UIViewController
サブクラス内にこのコードがあります:
- (id)init {
self = [super init];
if (self) {
self.view.frame = [PDToolbox screenFrame];
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.view.backgroundColor = [UIColor redColor];
}
return self;
}
回転方法に関して私が持っている唯一のものはこれです:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}
それでも、画面を横向きに回転させた後、ビューで NSLog を実行すると、次のようになります。
<UIView: 0x10061640; frame = (0 0; 320 480); transform = [0, -1, 1, 0, 0, 0]; autoresize = W+H; layer = <CALayer: 0x10061670>>
通常のように回転するだけでなく、なぜこの変換を行っているのかわかりませんか? これは、回転後にその上に配置し、ビューのサイズに設定されたビューが 320x480 の位置になることを意味します。
編集:
人々は理解していません。そこで、以下を使用して、UIView と同じサイズのビューをその上に配置します。
UIView *anotherView = [UIView alloc] initWithFrame:controller.view.bounds];
[controller.view addSubview:anotherView];
anotherView を縦向きに追加すると、anotherView が縦向きに表示され、フレームは 320x480 になります。
anotherView を横向きに追加すると、anotherView が横向きに表示されますが、320x480 のフレームが表示されます。これは、なんらかの理由で、controller.view のフレームがまだ残っているためです。