Ориентация интерфейса для iOS 6 не работает

У меня есть приложение, которое я хочу отображать в портретном режиме. Но я хочу показать только один вид в обоих режимах.

Я делаю это для iOS5. Но в iOS6 я не могу этого сделать.

Я также попробовал много кодов для его решения.

i use navigation in my app & rotate only one view in both mode is not possible in ios6. Either you fixed your rotation for a view or rotate whole app. Am i right?

Как я могу решить эту проблему?

1
nl ja de
@MilKyWaY, спасибо за ответ, но извините, что я все еще не могу решить проблему.
добавлено автор user1673099, источник
@MilKyWaY, я использую навигацию в своем приложении и поворачиваю только один вид в обоих режимах в ios6 невозможно. Либо вы фиксировали свое вращение для просмотра, либо вращаете все приложение. Я прав???
добавлено автор user1673099, источник
@MilKyWaY, я использую навигацию в своем приложении и поворачиваю только один вид в обоих режимах в ios6 невозможно. Либо вы фиксировали свое вращение для просмотра, либо вращаете все приложение. Я прав???
добавлено автор user1673099, источник
@MilKyWaY, спасибо за ответ, но извините, что я все еще не могу решить проблему.
добавлено автор user1673099, источник
@Prince, можете ли вы разместить код?
добавлено автор user1673099, источник
@Prince, можете ли вы разместить код?
добавлено автор user1673099, источник
@Prince, да, я использую контроллер навигации, и я также взял Tab Bar во всех xib
добавлено автор user1673099, источник
@Prince, да, я использую контроллер навигации, и я также взял Tab Bar во всех xib
добавлено автор user1673099, источник
да, я использую навигационный контроллер, и я также взял Tab Bar во всех xib
добавлено автор user1673099, источник
да, я использую навигационный контроллер, и я также взял Tab Bar во всех xib
добавлено автор user1673099, источник
моя цель развертывания - 5.1 и да, я пытаюсь использовать метод shouldAutorotate и supportedInterfaceOrientation.
добавлено автор user1673099, источник
моя цель развертывания - 5.1 и да, я пытаюсь использовать метод shouldAutorotate и supportedInterfaceOrientation.
добавлено автор user1673099, источник
@ user1673099 Мое усилие помогло вам?
добавлено автор D_D, источник
@ user1673099 Мое усилие помогло вам?
добавлено автор D_D, источник
Какова цель развертывания? Вы реализовали какие-либо новые методы вращения iOS 6?
добавлено автор Thilo, источник
Какова цель развертывания? Вы реализовали какие-либо новые методы вращения iOS 6?
добавлено автор Thilo, источник
r u с помощью контроллера UINavigation ???
добавлено автор Paresh Navadiya, источник
r u с помощью контроллера UINavigation ???
добавлено автор Paresh Navadiya, источник

3 ответы

Из примечаний к выпуску Apple iOS 6 SDK:

Авторизация меняется в iOS 6. В iOS 6   shouldAutorotateToInterfaceOrientation: метод UIViewController - это   осуждается. Вместо этого вы должны использовать   supportInterfaceOrientationsForWindow: и shouldAutorotate.

 Больше ответственности направляется в приложение и делегат приложения. Теперь контейнеры iOS (например, UINavigationController) не консультироваться
 
     

их детей, чтобы определить, должны ли они авторотировать. От   по умолчанию, приложение и поддерживаемый интерфейс контроллера представления   ориентации установлены на UIInterfaceOrientationMaskAll для iPad   идиома и UIInterfaceOrientationMaskAllButUpsideDown для iPhone   идиомы.

 Поддерживаемые интерфейсы интерфейса диспетчера видений могут меняться со временем - даже ориентированные на приложение интерфейсы могут меняться
 
     

со временем. Система запрашивает самый полный полноэкранный контроллер   (обычно это контроллер корневого представления) для поддерживаемого интерфейса   ориентации, когда устройство вращается или когда контроллер вида   представлен полноэкранный модальный стиль презентации. Более того,   поддерживаемые ориентации извлекаются только в том случае, если этот контроллер просмотра   возвращает YES с помощью метода toAutorotate. Система пересекается   поддерживаемые ориентации контроллера View с поддерживаемым приложением   ориентации (как определено в файле Info.plist или приложении   приложение делегата: поддерживаетсяInterfaceOrientationsForWindow:   метод), чтобы определить, следует ли вращаться.

 Система определяет, поддерживается ли ориентация путем пересечения значения, возвращаемого приложением
 
     

supportedInterfaceOrientationsForWindow: метод со значением   возвращаемый методом supportedInterfaceOrientations для самого верхнего   полноэкранный контроллер. Метод setStatusBarOrientation: анимированный:   не является устаревшим. Теперь он работает, только если   supportedInterfaceOrientations метод самого верхнего полноэкранного просмотра   контроллер возвращает 0. Это делает вызывающего абонента ответственным за обеспечение   что ориентация строки состояния согласована.

 Для совместимости контроллеры представлений, которые все еще реализуют метод shouldAutorotateToInterfaceOrientation: не получают новые
 
     

поведение авторотации. (Другими словами, они не возвращаются к   используя приложение, делегат приложения или файл Info.plist, чтобы определить   поддерживаемых ориентаций.) Вместо этого   shouldAutorotateToInterfaceOrientation: метод используется для синтеза   информацию, которая будет возвращена   supportedInterfaceOrientations.

     

Если вы хотите, чтобы все ваше приложение вращалось, вы должны установить   Info.plist для поддержки всех ориентаций. Теперь, если вы хотите   чтобы быть только портретистом, вам нужно будет сделать какой-то подкласс и   переопределить методы авторотации, чтобы возвращать только портрет.

See this example How to force a UIViewController to Portrait orientation in iOS 6

<�Сильный> EDIT:

Решения:

@implementation UINavigationController (Rotation_IOS6)

-(BOOL)shouldAutorotate
{
    return [[self.viewControllers lastObject] shouldAutorotate];
}

-(NSUInteger)supportedInterfaceOrientations
{
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}

@end
1
добавлено
cn вы публикуете некоторый код для справки?
добавлено автор user1673099, источник
могу ли я отправить свой код? Я ссылаюсь на вашу ссылку, но мне это не помогло
добавлено автор user1673099, источник
Спасибо за ответ! должен ли я писать этот код во всех файлах класса?
добавлено автор user1673099, источник
как я могу сделать подкласс класса NavigationController
добавлено автор user1673099, источник
см. mobile.tutsplus.com/tutorials/iphone/objective-c-categories и сделайте это в случае вашего контроллера навигации и добавьте код, который я показал, тогда он будет работать. Это все, что я могу помочь
добавлено автор D_D, источник
см. мой обновленный ответ
добавлено автор D_D, источник
она не может быть решена с помощью нескольких строк кода, вы можете увидеть решение в ссылке, которую я назвал внизу, вы не это заметили?
добавлено автор D_D, источник
Если вы хотите, чтобы все наши навигационные контроллеры соблюдали контроллер верхнего уровня, вы можете использовать категорию, чтобы вам не пришлось проходить и менять кучу имен классов ... смысл?
добавлено автор D_D, источник
Разве вы не знаете категоризацию?
добавлено автор D_D, источник

в ios6 вы пытаетесь с этим в plist, как ниже изображение: -

enter image description here

and you can also set at xcode->projectname->summary:-

enter image description here

1
добавлено
можете ли вы опубликовать код? Я очень смущен для iOS 6.
добавлено автор user1673099, источник
Я пытаюсь использовать код. Но когда я поворачиваюсь в ландшафте, все представления - это пейзаж. Я просто включаю оба режима только для одного вида.
добавлено автор user1673099, источник
можете ли вы опубликовать код Как это сделать? Я хочу показать только один вид в обоих режимах, а другие - только в портретном режиме.
добавлено автор user1673099, источник
Спасибо за ответ .. но я также хочу показать одно представление в ландшафтном режиме, поэтому я выбираю всю ориентацию в резюме
добавлено автор user1673099, источник
iOS 6 "> stackoverflow.com/questions/12520030/…
добавлено автор Nitin Gohel, источник
да, вы можете разместить авторизацию только для одного вида в Landscap, и вы также можете ввести в действие Catagory of NavigationController, чтобы эффективно управлять и корректировать
добавлено автор Nitin Gohel, источник

в ios6 вы пытаетесь с этим в plist, как ниже изображение: -

enter image description here

and you can also set at xcode->projectname->summary:-

enter image description here

1
добавлено
Я пытаюсь использовать код. Но когда я поворачиваюсь в ландшафте, все представления - это пейзаж. Я просто включаю оба режима только для одного вида.
добавлено автор user1673099, источник
можете ли вы опубликовать код? Я очень смущен для iOS 6.
добавлено автор user1673099, источник
можете ли вы опубликовать код Как это сделать? Я хочу показать только один вид в обоих режимах, а другие - только в портретном режиме.
добавлено автор user1673099, источник
Спасибо за ответ .. но я также хочу показать одно представление в ландшафтном режиме, поэтому я выбираю всю ориентацию в резюме
добавлено автор user1673099, источник
iOS 6 "> stackoverflow.com/questions/12520030/…
добавлено автор Nitin Gohel, источник
да, вы можете разместить авторизацию только для одного вида в Landscap, и вы также можете ввести в действие Catagory of NavigationController, чтобы эффективно управлять и корректировать
добавлено автор Nitin Gohel, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.