2015-01-10 6 views
2

У меня был проект A, который запускается до появления нового размера экрана. После обновления моего Xcode до 6.0, в раскадровке и IB, я все еще использую экран 4.0 при разработке пользовательского интерфейса. И когда я протестировал проект на экране 4.7 и экране 5.5, вид мог масштабироваться автоматически и выглядел так же, как 4.0. Например, в IB у меня есть UIImageView, размер которого составляет 60x60 (в режиме 320x568), а когда я запускаю его в симуляторе iPhone 6, размер изображения становится 70x70.Xcode Auto Layout Setting

Недавно я создал еще один проект B, который имеет совершенно разные начальные настройки. (Например, файл * -Prefix.pch отсутствует). Я все еще разрабатывал интерфейс User Interface в 4.0, но когда я тестировал симулятор iPhone 6, представление не масштабировалось.

Поэтому я начал выполнять некоторые тесты. Оба теста разработаны в 4.0 Размер экрана. Сначала я создал представление с ярлыком в центре в раскадровке Project A и запустил симулятор iPhone 6. Второй тест. Я создал тот же самый вид в ракурсе проекта B и запустил в симуляторе iPhone 6. Результат совсем другой.

Результат для теста 1 (Project A): enter image description here

enter image description here

Результат для теста 2 (Project B): enter image description here

enter image description here

Как мы можем видеть, когда код, запущенный в проекте A, вид может масштабироваться правильно на больший экран, но в проекте B он не может масштабироваться.

Может кто-нибудь ответить, почему они разные? Какой результат нормальный? Потому что, если первый результат теста нормально, то мне не нужно беспокоиться о развитии зрения в различном размере (ну еще нужно рассмотреть 3,5 дюйма)

UPDATE:

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

UPDATE:

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

+1

Не похоже, чтобы вы установили какие-либо ограничения, если вы работаете с автозапуском, вам нужно установить ограничения для того, чтобы элементы отображались как ожидалось. Вы также можете включить автозапуск, если вы предпочитаете старый способ, просто нажмите файл раскадровки/nib, см. Это: http: //www.goodbyehelicopter.com/wp-content/uploads/2012/02/file_inspector_on_nib.png – Emil

+0

@Emil Это проблема, которую я задаю. Оба теста используют автоматическую компоновку без каких-либо ограничений и точно такую ​​же базу кода, но имеют разные результаты. Я хотел бы знать, почему существуют различия. – SnowWolf

+0

Они разные, потому что, когда нет ограничений, Autolayout предполагает, что позиция будет той, что находится в раскадровке/нибе, относительно верхнего левого. Так как экран более новых устройств больше, то больше пикселей, а явное расстояние между пикселями слева вверху больше не будет тем, что ожидает вас. Я предлагаю вам прочитать об Autolayout в документах. https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Introduction/Introduction.html – Emil

ответ

2

enter image description here enter image description here

Благодаря Брэду, проблема заключается в том, что один проект имеет запуск изображение, но другой нет. Чтобы сделать автоматическую масштабируемость пользовательского интерфейса, выберите «Использовать каталог активов». Если нет изображений запуска, он будет показывать черный, но не имеет значения. Поэтому для 4-дюймового, 4,7-дюймового и 5,3-дюймового экрана мы можем просто разработать один размер экрана, и он будет масштабироваться для других автоматически без ограничений.