Оптимизация под размер экрана


#1

Добрый день.
Вопрос зеленого новичка, прошу опытных стульями не кидаться.
Изучение начал с книги Swift для детей. Думаю, многие с ней знакомы.
Дошел до создания приложения BirthdayTracker.
В книге говорится, что нужно добавить “Add Missing Constraints” к View Controller чтобы приложение корректно отображалось и на 7+ и на 5s и т.д.
Делаю все по учебнику, но после добавления ограничений, в симуляторе 5s все поля уплывают. Если не добавляю ограничения, то поля выходят за пределы экрана, но остаются на своих местах.
В чем моя ошибка?


#2

сложно сказать, книга 2015-го года, что-то уже могло измениться. Посмотрите для начала выбрана ли у вас опция Use Auto Layout на панели File Inspector (справа)?


#3

Да, выбрано:
Auto layout
Trait Variations
save area layout


#4

ок, а на самом экране появляются какие-то красные линии? Можете скриншот показать?


#5

Полос нет


#6

явных ошибок нет. А как выглядит экран на 5с если не добавлять ограничения?


#7

Поля для ввода имени и фамилии выходят за пределы экрана.


#8


а вот так если добавить ограничения


#9

на всякий случай покажите еще 5с без ограничений в альбомном режиме


#10

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


#11

ок. Там у вас ограничений целая куча, долго разбираться))

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

знаете как это посмотреть?


#12

Честно говоря не знаю как проверить то о чем Вы говорите.
Можете подсказать пожалуйста?


#13

ок, сделайте еще раз тот большой скриншот, только раздвиньте вправо полностью вторую слева панель, где в середине есть слово Constraints. Чтобы были видны все записи под этим словом. И также раскройте списки под двумя текстовыми полями - Round Style Text Field


#14


вот так?


#15

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

So, есть два варианта двигаться дальше. 1. вы можете заново пройтись по инструкции и посмотреть не сделаны ли где-то ошибки. Тогда возможно сработает опция Add Missing Constraints. Но не факт. 2. вручную сами поменяем констрэйнты, я подскажу как. Тогда должно отображаться нормально, но вышеназванная опция может не будет нужна.

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


#16

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

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

А вот Вы пишите, что “вышеназванная опция может не будет нужна” - это Вы про “Add Missing Constraints”, правильно понял?


#17

да, это она.

Ок, в этой самой панели выделяете первое текстовое поле - Round Style Text Field, а затем в самой крайней справа панели находим Size Inspector, это вторая иконка справа. И там находим размеры констрэйнтов, в них находим слово tralling.

Первым делом смотрим, какой там размер сейчас.


#18

Так, там у меня 2 пункта с Trailling

  1. Safe area: 59
  2. Round Style Text Field
    значения нет

#19

еще веселее, а говорите нет ошибок))

удаляете тот вариант, где нет значения - кликнуть(выделится) - клавиша delete

Затем выделяете второе текстовое поле и тоже смотрите, какие там значения


#20

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

удалил: 2. Round Style Text Field
значения нет

А во втором вообще нет ни одного Trailing