Раскадровка Xcode: Почему в iPad раскадровка показывает размеры iPhone?
У меня есть универсальное приложение, которое использует раскадровки. Существует раскадровка iPhone и раскадровка iPad. Тем не менее, в построителе интерфейса, viewcontrollers для раскадровки iPad все еще имеют размер для iPhone. Как мне получить раскадровку iPad, чтобы показать контроллеры просмотра iPad размером с iPad?
Я понимаю, что отображение диспетчера представлений в построителе интерфейсов - это только конкретизация, зависящая от времени разработки, но наличие VC с размером iPhone делает очень трудным выложить пользовательский интерфейс правильно.
Ответы
Ответ 1
После некоторого копания через исходный код раскадровки, оказывается, что раскадровка iPad была скопирована с раскадровки iPhone. Итак, на самом деле возник вопрос, как преобразовать раскадровку iPhone в раскадровку iPad?
Ответ на удивление прост. Я столкнулся с этим SO answer - , чтобы преобразовать раскадровку iPhone в раскадровку iPad, сделайте следующее:
-
Из Xcode щелкните правой кнопкой мыши раскадровку и выберите Open As → Исходный код
-
Найдите targetRuntime="iOS.CocoaTouch"
и измените его на targetRuntime="iOS.CocoaTouch.iPad"
-
Щелкните правой кнопкой мыши раскадровку и выберите Open As → iOS Storyboard
Теперь раскадровка отобразит все представления в правильном размере.
Ответ 2
Когда вы сначала создаете раскадровку, вы выбираете семейство устройств (iPhone или iPad), для которых предназначена раскадровка. Я не знаю, как изменить семейство устройств после того, как раскадровка уже создана.
Однако, чтобы решить вашу проблему, я рекомендую следующее:
Создайте новую раскадровку, перейдя по ссылке: New → File → User Interface → Storyboard (обязательно выберите Device Family = iPad при выборе параметров.)
Перейдите на свой старый раскадровки, выберите и скопируйте все, нажав Command-A, Command-C. Затем перейдите к своему и вставьте все, нажав Command-V. Теперь ваши контроллеры будут иметь размер iPad.
Затем вы можете удалить старую раскадровку и переименовать новую раскадровку в любое старое имя.
Ответ 3
Этот ответ не является решением, но поможет получить одну из причин, почему такие вещи происходят.
Проблема возникает, когда вы пытаетесь отключить:
"Использовать автоматический макет"
Когда вы снимите флажок, появится всплывающее окно. Существует выбор:
"Сохранять данные класса размера для: iPhone" , по умолчанию выбрано iPhone (независимо от того, какой проект iPad или iPhone вы создали).
Если вы не укажете об этом, ваш раскадровка будет автоматически преобразована в размеры iPhone.
Не забудьте выбрать правильное устройство.
Ответ 4
Я использовал предложенный ответ, чтобы преобразовать раскадровку iPhone в раскадровку iPad, и она отлично поработала для большинства моих просмотров. Тем не менее, я понял, что одна из мнений по-прежнему была размером с iPhone. Причина была в том, что я заблокировал все свойства одного фонового изображения (потому что я не хотел случайно его перемещать). Снятие блокировки повернуло вид назад в iPad размером. Это может помочь кому-то застрять в этом.
Ответ 5
Убедитесь, что вы установили правильную раскадровку в цель > Общие. Этот вид вещей заставляет меня болеть за 3 часа, прежде чем я понял, что я установил одну и ту же раскадровку для iPhone в качестве своего раскадра iPad.
Ответ 6
Изменение targetRunTime не работало для меня в Xcode 6.2, однако этот второй метод ручного копирования над представлениями сделал трюк.