Я вставил этот код во все мои контроллеры view:
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationLandscapeRight) {
CGAffineTransform transform = self.view.transform;
// Use the status bar frame to determine the center point of the window's content area.
//CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
//CGRect bounds = CGRectMake(0, 0, statusBarFrame.size.height, statusBarFrame.origin.x);
CGPoint center = CGPointMake(320/2, 480/2);
// Set the center point of the view to the center point of the window's content area.
self.view.center = center;
// Rotate the view 90 degrees around its new center point.
transform = CGAffineTransformRotate(transform, (M_PI / 2.0));
self.view.transform = transform;
}
и у меня также есть:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
Я вижу, что коды работают правильно, как и должны, но время от времени бывает редкий случай, когда контроллеру основного вида не удалось повернуть в ландшафтный режим после того, как я вернул его вид в основной вид. Вероятность того, что это произойдет, очень редка, но меня это беспокоит. Более того, я вижу, что это происходит чаще всего на iphone. На симуляторе я вспомнил, что этого никогда не произойдет. Вы знаете, каковы возможные причины этого? Заранее спасибо.