今日iOS6で遊んでいて、iOS5で理解できたと思っていた、さまざまな向きでのビューフレームサイズのチェックに行き詰まりました。(自動レイアウトで基本的な問題が解決する場合が多いことは理解していますが、それでもさまざまな理由でこのチェックが必要になると思いますか?)
自動レイアウトをオフにすると、ビューの寸法を確認すると正しい寸法サイズが返されますが、正しいエッジは返されません。つまり、iPhoneの縦向きでは.widthプロパティ= 320、横向きでは.widthプロパティ= 300ですが、300は高さの寸法の値であると予想されます。
self.viewはウィンドウに適切に拡大縮小されますが、self.viewのフレームに設定された別のビューは拡大縮小されないため、これは私にはちょっと奇妙です。これは、向きを確認してから正しい数字を取得することで簡単に修正できますが、明らかな何か、またはiOS6の新しいルールが欠けていますか?
//always gives aprox 300 for width despite device orientation
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
screenRect = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
screenRect = self.view.window.frame;
NSLog(@"screen rect size = %f x %f", screenRect.size.width, screenRect.size.height);
[imageView setFrame:screenRect];
}
//a button to check orientation. always gives aprox 300 for width despite device orientation
- (IBAction)checkScreenSize:(id)sender {
screenRect = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
NSLog(@"screen rect size = %f x %f", screenRect.size.width, screenRect.size.height);
screenRect = [[UIScreen mainScreen]applicationFrame];
NSLog(@"screen rect size = %f x %f", screenRect.size.width, screenRect.size.height);
}