У меня был проект 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
):
Результат для теста 2 (Project B
):
Как мы можем видеть, когда код, запущенный в проекте A
, вид может масштабироваться правильно на больший экран, но в проекте B
он не может масштабироваться.
Может кто-нибудь ответить, почему они разные? Какой результат нормальный? Потому что, если первый результат теста нормально, то мне не нужно беспокоиться о развитии зрения в различном размере (ну еще нужно рассмотреть 3,5 дюйма)
UPDATE:
Кажется, что мне нужно сделать что-то ясное в случае использования Автоматический макет как для проекта, так и для управления переменными, я не выбрал Используйте классы размера, так как проект A
не имел этого раньше.
UPDATE:
Я извлекал каждый вид контроллеров и сделать это снова в обоих проектах. И результаты остаются такими же, как и раньше. Я просмотрел исходный код раскадровки, только различия - это идентификаторы контроллера просмотра.
Не похоже, чтобы вы установили какие-либо ограничения, если вы работаете с автозапуском, вам нужно установить ограничения для того, чтобы элементы отображались как ожидалось. Вы также можете включить автозапуск, если вы предпочитаете старый способ, просто нажмите файл раскадровки/nib, см. Это: http: //www.goodbyehelicopter.com/wp-content/uploads/2012/02/file_inspector_on_nib.png – Emil
@Emil Это проблема, которую я задаю. Оба теста используют автоматическую компоновку без каких-либо ограничений и точно такую же базу кода, но имеют разные результаты. Я хотел бы знать, почему существуют различия. – SnowWolf
Они разные, потому что, когда нет ограничений, Autolayout предполагает, что позиция будет той, что находится в раскадровке/нибе, относительно верхнего левого. Так как экран более новых устройств больше, то больше пикселей, а явное расстояние между пикселями слева вверху больше не будет тем, что ожидает вас. Я предлагаю вам прочитать об Autolayout в документах. https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Introduction/Introduction.html – Emil