Какова эквивалентность iOS для Android RelativeLayout / LinearLayout?

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

Проверьте это: приложения iOS 6 – как бороться с размером экрана iPhone 5? И Как добавить поддержку iPhone 5 для больших приложений для приложений iOS в Xcode?

Но это делается для вас, в основном, с автоматической компоновкой. Нажмите на свой проект в Xcode и перейдите на вкладку «Сводка», чтобы добавить другой экран запуска экрана для вашего приложения.

Начиная с iOS 9 вы можете использовать UIStackView , который очень похож на LinearLayout : вы добавляете представления, а представление стека упорядочивает их по мере необходимости на основе вашего параметра размера – если вы используете Interface Builder, вы можете поэкспериментировать с каждым из вариантов, чтобы увидеть Который подходит вашим потребностям. Вы также можете установить расстояние между представлениями в представлении стека, добавив некоторое дополнение.

ПРЕДУПРЕЖДЕНИЕ . При добавлении дочерних представлений стека в коде вы всегда должны использовать addArrangedSubview() следующим образом:

 stackView.addArrangedSubview(someView) 

Если вы попытаетесь использовать простой старый addSubview() он будет работать неправильно, потому что представление стека не будет знать, чтобы его организовать.

Что касается удаления, вам нужно быть осторожным, чтобы использовать stackView.removeArrangedSubview(someView) и someView.removeFromSuperview() иначе представление не будет удалено правильно.

Вы можете найти полезный учебник UIStackView .

Нет эквивалентных или относительных и линейных макетов. Элементы пользовательского интерфейса имеют авторезистирующие маски, которые определяют, как они будут перемещаться / растягиваться при изменении размера супервизора (например, вращение экрана). Вы также можете использовать ограничения компоновки для позиционирования, если вы планируете создавать приложение для iOS 6+. Если вы не можете решить проблему перестановки с помощью этих инструментов, вы должны изменить кадры элементов пользовательского интерфейса в своем коде.

Автоматическая компоновка »RelativeLayout

UIStackView ≈ LinearLayout

ИМО. UIStackView не был хорошо разработан

  1. Не может легко добавить дополнительные ограничения между subviews / subview и superview
  2. Слишком часто возникает конфликт ограничений

    Икс. Только iOS 9+

Поэтому я написал AutoLinearLayoutView, заменив UIStackView.

Демо-скриншот

Оформить заказ от Github AutoLinearLayoutView