IOS 7 При повороте в панели вкладок правая сторона обзора не доступна

У меня очень простое приложение, состоящее из одного представления. Все работает отлично, приложение поворачивается, а кнопки в правой части экрана можно щелкнуть. Я использую iOS 7 и Xcode 5.

Если я войду в раскадровку и выберите представление, тогда сделайте "Редактор" > "Вставить в" > "Панель управления вкладками", теперь, когда приложение поворачивается от портрета к пейзажу, правая часть приложения не доступна. Кажется, что в точности 768 пикселей слева, где он перестает работать, поэтому мне кажется, что что-то в приложении не вращается. Что может быть неправильным?

Это просто базовое приложение с одним видом, которое я наложил на него некоторые элементы пользовательского интерфейса. Единственное, что заставляет его перестать работать, - это встраивание в панель вкладок.

Вот весь проект: https://github.com/tomkincaid/rotate

Обновление: я изначально использовал ту же самую раскладку iPhone для iPhone и iPad, и подумал, что это может быть проблемой. Тем не менее, я создал новую раскладку iPad, и у нее такая же проблема.

Другое обновление: если я поместил представление в контроллер навигации, он будет работать. Так что View works и Tab > Nav > View работает, но Tab > View не работает.

enter image description here

Ответы

Ответ 1

У меня была та же проблема. Введя следующий код в мой view controller viewDidLoad исправил его:

self.view.autoresizesSubviews = YES;
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

Ответ 2

Просто введите следующий код в класс TabBarViewController.

- (void)viewDidLayoutSubviews
{
    // fix for iOS7 bug in UITabBarController
    self.selectedViewController.view.superview.frame = self.view.bounds;
}

Ответ 3

Чтобы разработать этот ответ, вы можете добиться того же результата, отредактировав исходный код раскадровки.

Замена

<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>

с

<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>

для просмотра контроллера вида, который вызывает проблемы.

Ответ 4

В списке контроллеров представления в левой части экрана найдите обработчики вида/представления, перетащите представление под первым ответчиком, чтобы он не был связан с представлением контроллера вида.

Затем перейдите на вкладку макета с правой стороны, выберите все 4 анкера и оба набора стрелок изменения размера (горизонтально + вертикально).

Затем перетащите представление обратно туда, где оно было первоначально (чуть ниже контроллера вида).

Ответ 5

Я также столкнулся с той же проблемой и разрешил ее, добавив следующий код внутри метода делегирования делегата didFinishLaunchingWithOptions.

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
Окно

является объектом основного файла .xib интерфейса.