У меня есть приложение для iPhone, которое поддерживает все ориентации устройства, но у меня есть специальный модальный вид, который я хочу отображать только в альбомной ориентации.
Если устройство находится в горизонтальной ориентации, оно работает нормально, но еслиУстройство физически удерживается в портретной ориентации, оно не отображается так, как мне бы хотелось.
Поскольку устройство удерживается в портретной ориентации, изображение обрезается, а левая и правая стороны выходят за края экрана.Так как изображение имеет высоту только узкого размера, верх и низ показывают фон родительского вида.Если я затем поверну устройство в альбомную ориентацию, то все будет хорошо.
В моем исследовании я часто сталкиваюсь с shouldAutorotateToInterfaceOrientation , но я считаю, что это событие, которое срабатывает только тогда, когда устройствофизически вращается, что не относится к моей ситуации.Устройство физически удерживается в портретной ориентации, но я хочу отобразить вид, как если бы он был в горизонтальной ориентации.
[[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeRight] также упоминается, но у меня естьникогда не видел, чтобы это имело какой-либо эффект, когда я пытался его использовать.
Так что я предполагаю, что мой вопрос заключается в том, существует ли простой способ заставить начальное отображение вида в ориентации, отличной от физической ориентацииустройство и как именно это сделать.
Я использую следующую логику для модального отображения моего вида:
TitleViewController *titleController = [[TitleViewController alloc] initWithNibName:@"TitleViewController" bundle:[NSBundle mainBundle]];
titleController.delegate = self;
titleController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:titleController animated:YES];
[titleController release];
Я хочу всегда отображать модальное представление в альбомной ориентации, даже когдаустройство удерживается в портретном режиме.
ОБНОВЛЕНИЕ
Нашли решение, которое работает:
if (self.interfaceOrientation == UIInterfaceOrientationPortrait)
{
self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90));
self.view.bounds = CGRectMake(0.0, 0.0, 480, 320);
}
Однако при работе с ориентацией UIInterfaceOrientationPortraitUpsideDown , первоначально отображает вид с правильной ориентацией, но затем перемещает его обратно вкнижная ориентация с обрезанными сторонами и отображение фона над и под изображением.
Я пытался настроить угол на 270, -90 и другие значения, но всегда возвращается к портрету, когда в UIInterfaceOrientationPortraitUpsideDown ориентация.
Почему?