Ответ 1
У меня была та же проблема. Введя следующий код в мой view controller viewDidLoad исправил его:
self.view.autoresizesSubviews = YES;
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
У меня очень простое приложение, состоящее из одного представления. Все работает отлично, приложение поворачивается, а кнопки в правой части экрана можно щелкнуть. Я использую iOS 7 и Xcode 5.
Если я войду в раскадровку и выберите представление, тогда сделайте "Редактор" > "Вставить в" > "Панель управления вкладками", теперь, когда приложение поворачивается от портрета к пейзажу, правая часть приложения не доступна. Кажется, что в точности 768 пикселей слева, где он перестает работать, поэтому мне кажется, что что-то в приложении не вращается. Что может быть неправильным?
Это просто базовое приложение с одним видом, которое я наложил на него некоторые элементы пользовательского интерфейса. Единственное, что заставляет его перестать работать, - это встраивание в панель вкладок.
Вот весь проект: https://github.com/tomkincaid/rotate
Обновление: я изначально использовал ту же самую раскладку iPhone для iPhone и iPad, и подумал, что это может быть проблемой. Тем не менее, я создал новую раскладку iPad, и у нее такая же проблема.
Другое обновление: если я поместил представление в контроллер навигации, он будет работать. Так что View works и Tab > Nav > View работает, но Tab > View не работает.
У меня была та же проблема. Введя следующий код в мой view controller viewDidLoad исправил его:
self.view.autoresizesSubviews = YES;
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
Просто введите следующий код в класс TabBarViewController.
- (void)viewDidLayoutSubviews
{
// fix for iOS7 bug in UITabBarController
self.selectedViewController.view.superview.frame = self.view.bounds;
}
Чтобы разработать этот ответ, вы можете добиться того же результата, отредактировав исходный код раскадровки.
Замена
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
с
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
для просмотра контроллера вида, который вызывает проблемы.
В списке контроллеров представления в левой части экрана найдите обработчики вида/представления, перетащите представление под первым ответчиком, чтобы он не был связан с представлением контроллера вида.
Затем перейдите на вкладку макета с правой стороны, выберите все 4 анкера и оба набора стрелок изменения размера (горизонтально + вертикально).
Затем перетащите представление обратно туда, где оно было первоначально (чуть ниже контроллера вида).
Я также столкнулся с той же проблемой и разрешил ее, добавив следующий код внутри метода делегирования делегата didFinishLaunchingWithOptions.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
Окно является объектом основного файла .xib интерфейса.