Вы слишком рано проверяете размер рамки и границ.
Вместо этого проверяйте их после поворота:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
NSLog(@"Bounds %@", NSStringFromCGRect(self.view.bounds));
NSLog(@"Frame %@", NSStringFromCGRect(self.view.frame));
}
(Обратите внимание, что я использую NSStringFromCGRect
- удобно!)
Это приводит к выводу:
Bounds {{0, 0}, {1024, 748}}
Frame {{0, 0}, {748, 1024}}
Таким образом, в этом выводе фрейм «неправильный», но границы - это то, что вы ожидаете.На самом деле, фрейм на самом деле не неправильный, именно так и происходит вычисление frame -> bounds.Поэтому вам нужно получить доступ к границам.
См. Также, возможно, Имею ли я правильное понимание рамок и границ в UIKit?
Примечание: viewDidAppear вызывается раньше, чем вы думаетев схеме вещей.Согласно документации Apple: «viewDidAppear уведомляет контроллер представления о том, что его представление было добавлено в окно».Другими словами, это может произойти до того, как будет применено любое вращение.