#ios
#iOS
Вопрос:
У меня возникли проблемы с вращением моего приложения с момента перехода на Xcode 4 и iOS 5. Рвя на себе волосы, я создал совершенно новый тестовый проект, чтобы посмотреть, смогу ли я заставить вращаться простое приложение.
Я создал тестовый проект, используя шаблон «Пустое приложение». Все, что я добавил к этому шаблону, — это UINavigationController с подключенным к нему UIViewController. Для UIViewController есть файл nib с одной меткой с надписью «Привет».
На целевом сводном экране я нажал все кнопки для «Поддерживаемых ориентаций устройств».
В файлах .m для кода контроллера навигации и просмотра я изменил shouldAutorotate … на:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (YES);
}
Тестовый проект создается без проблем и работает отлично. Есть панель навигации и дружелюбное сообщение «Привет», но чертова штука не вращается!
Очевидно, мне не хватает чего-то довольно простого, но я не могу понять, что это такое. Мое подозрение пало на .nib. В разделе «Имитируемые показатели» есть атрибут, называемый ориентацией. Для этого задано значение Портрет. Единственный другой вариант — «Пейзаж». Если я изменю этот параметр на «Альбомный», вид в редакторе .nib изменится на альбомный, но когда я запускаю приложение, оно работает в портретном режиме и по-прежнему отказывается поворачиваться.
Надеюсь, кто-нибудь посмеется над моей ошибкой и укажет на глупую ошибку, которую я совершаю. Пожалуйста, сделайте!
Ответ №1:
в вашем RootViewController.m найдите строку
return (UIInterfaceOrientationIsPortrait( interface Orientation ) );
и вы можете заменить это на что угодно… Нравится
return (UIInterfaceOrientationIsLandscape( interface Orientation ) );
Комментарии:
1. На самом деле у меня нет такой строки в моем корневом контроллере просмотра, но вы навели меня на след решения. В applicationDidFinishLaunchingWithOptions я выполнял: [self.window addSubview: nav.view], что, я думаю, немного старомодно. Что мне нужно было сделать, так это: [self.window setRootViewController: nav]. Это устранило проблему с вращением, хотя я не совсем уверен, почему. Первый способ работал для меня нормально. Мне нужно прочитать об этом и выяснить, почему оно больше не работает. Спасибо!
2. Последний вид, добавленный в окно, — это тот, который получает события поворота; если вы добавляли другой вид в окно после nav.view, это могло быть причиной того, что у вас ничего не получилось.
3. Обновлял старый проект и setRootViewController: проблема была в этом. Спасибо, Джон!