Мое приложение имеет один контроллер вида, который не может изменить ориентацию.Думайте об этом как об игровом поле, которое необходимо зафиксировать на месте.
Теперь я хочу создать UIActionSheet, но, учитывая то, как пользователь держит устройство, я бы хотел сопоставить лист сориентация.
Кажется, что UIActionSheet, в отличие, скажем, от MFComposerViewController, не получает свою ориентацию от StatusBar, который я вращаю на основе ориентации, но получает свою ориентацию от нижележащего контроллера представления.Другими словами, UIActionSheet выходит в портретной ориентации, независимо от того, как устройство удерживается.
Я пытался:
CGAffineTransform t = CGAffineTransformMakeRotation(lastUIAngle);
[actionSheet setTransform:t];
if (UIInterfaceOrientationIsLandscape(lastOrientation))
actionSheet.frame = CGRectMake(0, 0, 480, 320);
else
actionSheet.frame = CGRectMake(0, 0, 320, 480);
actionSheet.center = self.view.center;
И мне удается получить правильную ориентацию, ноитоговый лист действий поднимается со стороны портрета и имеет размеры, как если бы он все еще находился в портретной ориентации.Рамка листа действий рассчитывается на основе количества кнопок и т. Д.
Кто-нибудь сумел заставить UIActionSheet правильно отображаться в указанной ориентации?
(я также пытался создать новый вид,который был преобразован и имел правильный размер, но UIActionSheet проигнорировал его. Осталось только создать новый UIViewController, который автоматически поворачивается, и сделать UIActionSheet его дочерним элементом. Однако это означает, что мое игровое поле полностью затенено новымпросмотр контроллера.)