Xcode 8: Могу ли я использовать Constraints и autosizing как в Single View?

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

С Xcode 8 свойство translatesAutoresizingMaskIntoConstraints для каждого представления автоматически поддерживается интерфейсом Builder:

  • По умолчанию, когда дочерний вид сначала добавляется, значение свойства равно true.
  • Когда первое ограничение добавляется к дочернему представлению, значение автоматически устанавливается на false, а панель Индекс размера изменяется на представление Ограничения.
  • Когда последнее ограничение удаляется из дочернего представления, значение свойства автоматически возвращается к истинному, а Инспектор размера возвращается к представлению Авторезистирование.

Ответ 3

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

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

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

Но вот что:

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

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

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

Это также означает, что вы можете использовать, например. <Сильного > Вид (автоматическое изменение) → подтаблица (ограничения)