2015-01-05 2 views
0

У меня есть это приложение, в основном показывающее фотографии.Сдвиг экрана на UIInterfaceOrientationLandscapeRight

Приложение первоначально предназначалось для iOS 3.1 и обновлялось до 4 до опубликования. С тех пор это не касалось. Теперь, когда владелец API применил некоторые изменения, которые не так совместимы, как они думали, я вынужден обновить приложение. Поэтому мне придется идти за обновлениями для iPhone 5 и 6 и 6+ и iOS 7 и 8 за один раз.

Я наблюдаю за этим поведением в симуляторе размеров iphone 4, 5 и 6+.

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

Landscape left, OK Landscape right, shifted Portrait, OK

Это странно, потому что я не знаю ничего, что я бы делать разные для ландшафтной вправо или влево. Все, что я делаю, различается между любым портретом и любой ландшафтной ориентацией.

Он отлично работал в старой версии. Но, честно говоря, я не могу воспроизвести это больше, потому что у меня нет доступа к старым версиям xcode и sdk. Но приложение хранится годами и отлично работает на современных устройствах и современных версиях ОС.

Немного более сопутствующую информацию, только в случае, если это имеет значение:

Приложение основано на UITabBar, но это не видно в этой точке зрения.

Изображение прокручивается. Он помещается на один вид в три раза по размеру экрана, при этом предыдущие и последующие изображения видны соответственно слева и справа. Этот вид с тремя изображениями помещается в прокрутку в виде размера экрана или окна соответственно. Эта концепция все еще работает с файлом, она просто сдвинута.

Когда я проверяю кадры элемента представления в отладчике или NSSC, все они кажутся правильными, начиная с (0.0/0.0) или соответственно.

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

Определений ограничений не существует. iOS6/7 дельта все установлены в 0.

Приложение «хочет полноэкранный режим». При нажатии на изображение все элементы пользовательского интерфейса исчезают и снова появляются на следующей вкладке. (Просто установив атрибут .hidden, за исключением панели навигации. Управляется с помощью setNavigationBarHidden: анимированный: с YES на анимированном) работает отлично даже в смещенном виде.

У меня заканчиваются идеи.

ответ

0

Пока я собрал все детали для вопроса, в конце концов одна идея пришла мне на помощь.

Проблема связана с укрытием панели вкладок.Я не мог использовать обычный способ скрыть панель вкладок, потому что тогда он не будет отображаться повторно при навигации по функциям, связанным с кнопками в нижнем виде наложения.

Поэтому я сделал что-то вроде взлома. Я не скрывал это регулярно, но перемещал панель вкладок с экрана. И: Это было единственное, что я сделал по-другому для пейзажного права и пейзажа. Я просто искал постоянные имена и нашел его.

Видимо, манипулирование представлением панели вкладок имело недостаток в более старых версиях iOS. (Или в более старых версиях SDK, я все еще работаю над этой важной детали)

Чтобы преодолеть изъян вид панели вкладок была изменена таким образом, для ландшафтного права:

[self.tabBarController.view setFrame:CGRectMake(0-kTabBarHeight,0,width+kTabBarHeight,height)]; 

Это, кажется, не имеет смысла но мне очень помогли много лет назад, когда приложение было написано. Теперь я изменил это:

[self.tabBarController.view setFrame:CGRectMake(0,0,width+kTabBarHeight,height)]; 

, который является тем же самым для ландшафта осталось слишком.

В то время, когда я обособлялся между версиями iOS> = 8,0 и меньше. Но я дважды проверю это на более старые устройства и позже вернусь к этому ответу.

Я оставляю вопрос опубликованным, потому что я нашел оригинальный «взломать» здесь тоже, так что я предполагаю, что другие будут иметь те же проблемы при обновлении до ios 8 или SDK 8 соответственно.

Благодарим за прослушивание.