Раскадровка Xcode: почему раскадровка iPad отображает просмотры в формате iPhone? - PullRequest
20 голосов
/ 26 марта 2012

У меня есть универсальное приложение, которое использует раскадровки. Существует раскадровка для iPhone и раскадровка для iPad. Однако в конструкторе интерфейсов контроллеры представления для раскадровки iPad все еще имеют размеры для iPhone. Как заставить раскадровку iPad отображать контроллеры вида iPad?

Я понимаю, что дисплей контроллера представления в конструкторе интерфейсов очень приятен во время разработки, но наличие ВК размером с iPhone затрудняет правильное размещение пользовательского интерфейса.

Ответы [ 7 ]

57 голосов
/ 27 марта 2012

После некоторого изучения исходного кода раскадровки выясняется, что раскадровка iPad была скопирована с раскадровки iPhone. Итак, на самом деле встал вопрос, как мне превратить раскадровку iPhone в раскадровку iPad?

Ответ на удивление прост. Я наткнулся на этот SO-ответ - , чтобы преобразовать раскадровку iPhone в раскадровку iPad, выполните следующее :

  1. В Xcode щелкните правой кнопкой мыши раскадровку и выберите «Открыть как» -> Исходный код

  2. Найдите targetRuntime="iOS.CocoaTouch" и измените его на targetRuntime="iOS.CocoaTouch.iPad"

  3. Снова щелкните правой кнопкой мыши раскадровку и выберите «Открыть как» -> «Раскадровка iOS»

Раскадровка теперь будет отображать все виды в правильном размере.

7 голосов
/ 26 марта 2012

Когда вы впервые создаете раскадровку, вы выбираете семейство устройств (iPhone или iPad), для которого предназначена раскадровка. Я не знаю, как изменить семейство устройств после того, как раскадровка уже создана.

Однако для решения вашей проблемы я рекомендую следующее:

Создайте новую раскадровку, выбрав: Новый -> Файл -> Пользовательский интерфейс -> Раскадровка (Обязательно выберите «Семейство устройств» = iPad при выборе параметров.)

Перейдите на старую раскадровку, выберите и скопируйте все, нажав Command-A, Command-C. Затем перейдите к своему и вставьте все, нажав Command-V. Ваши контроллеры представления теперь будут размером с iPad.

Затем вы можете удалить старую раскадровку и переименовать новую раскадровку в прежнее имя.

3 голосов
/ 01 сентября 2015

Этот ответ не является решением, но поможет выяснить одну из причин, по которой такие вещи случаются.

Проблема возникает при попытке отключить:

«Использовать автоматическое расположение»

Когда вы снимите флажок, появится всплывающее окно. Есть выбор:

«Сохранить данные класса размера для: iPhone» , по умолчанию выбран iPhone (независимо от того, какой проект iPad или iPhone вы создали).

Если вы не упомянете об этом, ваша раскадровка будет автоматически преобразована в размеры iPhone .

Не забудьте выбрать правильное устройство.

0 голосов
/ 30 июля 2018

В моем универсальном приложении я использовал SpriteKit для основного контроллера вида. SKScene.scaleMode было установлено на aspectFill. При запуске в симуляторе iPad приложение запускается в режиме iPhone. Решение было установить scaleMode = .resizeFill.

0 голосов
/ 28 марта 2015

Изменение targetRunTime у меня не сработало в Xcode 6.2, однако этот 2-й метод ручного копирования над представлениями добился цели.

0 голосов
/ 06 марта 2014

Убедитесь, что вы установили правильную раскадровку в Target> General.Такие вещи вызывают у меня головную боль в течение 3 часов, прежде чем я понимаю, что установил ту же раскадровку для iPhone, что и раскадровку для iPad.

0 голосов
/ 20 июня 2013

Я использовал предложенный ответ, чтобы преобразовать раскадровку iPhone в раскадровку iPad, и она отлично работала для большинства моих просмотров.Тем не менее, я понял, что одно из представлений было размером с раскадровку iPhone.Причина в том, что я заблокировал все свойства одного фонового изображения (потому что я не хотел случайно перемещать его).Сняв блокировку, вы вернулись в размер iPad.Это может помочь кому-то застрять.

...