Xcode 8: Могу ли я использовать ограничения и автоматическое изменение размеров как в одном представлении?

Доступна опция автоматического изменения размера, пока вы не зададите какие-либо ограничения для компонента пользовательского интерфейса.

Так можно ли использовать оба для моего ViewController? введите описание изображения здесь

3 ответа

Вы могли бы, но вы не должны

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

iOS заботится об автоматическом изменении размеров, создавая ограничения, которые передают информацию об автоматическом изменении в механизм ограничений. Это поведение может быть включено или отключено с помощью метко названного свойства translatesAutoresizingMaskIntoConstraints.

Вы можете попытаться добавить ограничения к представлению и при этом автоматически изменить его размер со старым поведением, установив для этого значения значение true, но я предлагаю вам использовать ограничения для каждого представления, так как оно может делать все, что может делать авторазмер, и многое другое.

Да, вы можете (использовать смесь ограничений и автоматическое изменение размера для подпредставлений в одном представлении) в Xcode 8. Увидеть:

02:38 https://developer.apple.com/videos/play/wwdc2016/236/

С Xcode 8, translatesAutoresizingMaskIntoConstraints Свойство для каждого представления автоматически поддерживается Интерфейсным Разработчиком:

  • По умолчанию при первом добавлении дочернего представления значение свойства равно true.
  • Когда первое ограничение добавляется в дочернее представление, значение автоматически устанавливается равным false, а панель инспектора размера изменяется на представление " Ограничения".
  • Когда последнее ограничение удаляется из дочернего представления, значение свойства автоматически возвращается к значению true, а инспектор размера возвращается к представлению с автоматическим изменением размера.
  • Если вы создадите представление программно, Xcode сгенерирует constraints удовлетворить autoresizing сам (translatesAutoresizingMaskIntoConstraints установлен в true). Однако, если вы создаете представление в IB, Apple говорит:

Если вы добавляете представления в Interface Builder, система автоматически устанавливает для этого свойства значение false.

  • Чтобы отразить это, любое представление, добавленное в IB до Xcode 8, имеет autoresizing вариант спрятан (по крайней мере, я его там некоторое время не видел).

Но вот в чем дело:

  • Начиная с Xcode 8, опция видна (translatesAutoresizingMaskIntoConstraints установлен в trueдо тех пор, пока вы не добавите какие-либо ограничения, поэтому, я думаю, вышеприведенный текст Apple не является правильным.

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

В подпредставлениях вы можете использовать разные для каждого, но это будет беспорядок, и я не могу себе представить разумное использование. view-> subview(ограничения) и subview(авторазмер)

Это также означает, что вы можете использовать, например, view(autoresizing)->subview(ограничения)

Другие вопросы по тегам