Изменение ориентации iPad, поворот строки состояния, панелей инструментов, но не основного вида - PullRequest
1 голос
/ 16 сентября 2010

Я пытаюсь настроить тестовое приложение для iPad на основе окон, где у меня есть один контроллер вида и один вид. Когда я поворачиваю iPad, я хочу изменить ориентацию панели инструментов, но не ориентацию самого вида. Например, своего рода фоновое представление, в котором вы работаете, привязано к устройству, но строка состояния и панели инструментов вращаются вокруг него. Это позволило бы пользователю работать со всеми углами, но всегда с правильно ориентированным набором инструментов.

Прекрасную реализацию того, что я хочу, можно найти в приложении «Кисти для iPad», где ориентация рисунка привязана к устройству, а панели инструментов вращаются вокруг него. Я думаю, что другие приложения для рисования делают то же самое.

Я пытался понять, как это сделать, но после исчерпания многих других вопросов, касающихся ориентации, я все еще в растерянности.

Может ли кто-нибудь указать мне правильное направление к аккуратному решению? Конкретная комбинация autoresize для autoresizeMask? Противодействовать анимации вращения другой в противоположном направлении? Используя несколько одновременных контроллеров представления, один для вращающихся представлений и один для не вращающихся?

Я бы очень признателен,

(Изменить: попытка уточнить вопрос после комментария Оли).

Ответы [ 3 ]

1 голос
/ 16 сентября 2010

Чтобы предотвратить вращение, вы должны поместить это в свой контроллер вида .m:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

Но вы говорите, что по-прежнему хотите изменить размер рамки просмотра в ответ на поворот. У меня не было необходимости делать это самостоятельно, поэтому я не уверен, достаточно ли просто установить autoresizingMask, чтобы иметь гибкую ширину и высоту; вам также может понадобиться реализовать didRotateFromInterfaceOrientation: и использовать setNeedsLayout и / или изменить размер представления вручную.

0 голосов
/ 12 октября 2010

У меня была ошибка, которая сделала это некоторое время назад - я почти уверен, что то, что вы просите, приведет к отклонению HIG-нарушения от Apple.Однако я попытаюсь вспомнить, в чем заключалась проблема.Я почти уверен, что это было примерно так:

У меня был tabbarViewController с надписью «Я ориентируюсь на любую ориентацию».

Одной из вкладок был обычный старый UIViewController с надписью «Я делаю только LandscapeLeft & L-Right "

Когда вы поворачивали, внутренняя часть (UIVC) оставалась на месте, а внешняя (TabVC) вращалась вокруг вещей.

У меня могут быть некоторые детализадом наперед или иным образом запутанный, но общие идеи таковы: стековые ВК, а не все ВК.

Удачи!

0 голосов
/ 16 сентября 2010

В той степени, с которой я работал, я не вижу простого ответа на ваш вопрос.Как насчет поворота всего (вкладка, навигация и строка состояния, ваш контроллер представления), а затем перерисовывание содержимого вашего контроллера представления в «старые координаты», чтобы для пользователя это выглядело так, как будто оно не повернуто?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...