Используя Xcode 4.2.1 iPad iOS 5.0.1, создайте новый проект iPad Single View. В контроллере добавьте:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
- (void) dumpView: (UIView *) view {
CGRect frame = view.frame ;
CGRect bounds = view.bounds ;
CGPoint center = view.center ;
NSLog(@"view [%@]:%d frame=%@ bounds=%@ center=%@"
, NSStringFromClass(view.class)
, [view hash]
, NSStringFromCGRect(frame)
, NSStringFromCGRect(bounds)
, NSStringFromCGPoint(center)) ;
}
- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientation {
NSLog(@"INViewController.didRotateFromInterfaceOrientation: %d to %d", fromInterfaceOrientation, self.interfaceOrientation) ;
[self dumpView: self.view] ;
[self dumpView: self.view.superview] ;
}
Запустите его, поверните устройство, и вы получите:
INViewController.didRotateFromInterfaceOrientation: 2 to 4
view [UIView] bounds={{0, 0}, {1024, 748}} center={394, 512}
view [UIWindow] bounds={{0, 0}, {768, 1024}} center={384, 512}
Другими словами, UIView имеет свои координаты, "поменявшиеся на пейзаж", как ожидалось, но его родительский интерфейс UIWindow все еще утверждает, что он находится в портретном режиме...
Кроме того, размер UIView кажется немного неправильным: координата y, которая должна быть в 20, равна 0...
Кто-нибудь знает, что это значит?