Параметры макета в Xamarin.iOS

Существует два разных механизма управления макетом при изменении размера представления или поворота:

  • Автоматическая настройка — инспектор автомасштабирования в конструкторе предоставляет способ задания AutoresizingMask свойств. Это позволит элементу управления привязаться к краям контейнера и (или) исправить их размер. Автоматическая автоматизация работает во всех версиях iOS. Более подробно описано ниже.
  • Автострока — функция, представленная в iOS 6, которая позволяет точно контролировать связи элементов управления пользовательским интерфейсом. Это позволит контролировать позиции элементов относительно других элементов в области конструктора. Этот раздел подробно описан в руководстве по конструктору Xamarin iOS с помощью автоматического макета .

Автоматическое изменение размера

Когда пользователь изменяет размер окна, например при смене устройства и изменении ориентации, система автоматически изменит размер представлений в этом окне в соответствии с правилами автосбора. Эти правила можно задать в C# с помощью AutoresizingMask свойства UIView панели свойств конструктора iOS, как показано ниже:

Снимок экрана: панель свойств конструктора I O S.

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

Снимок экрана: элемент управления автоизбиения в панели свойств конструктора I O S.

Изменение весны приведет к изменении размера представления на основе ширины или высоты родительского представления. При настройке построка представление будет поддерживать постоянное расстояние между собой и родительским представлением на этом конкретном крае.

Эти параметры также можно задать в коде:

textfield1.Frame = new RectangleF(15, 277, 79, 27);
textfield1.AutoresizingMask = UIViewAutoresizing.FlexibleRightMargin | UIViewAutoresizing.FlexibleBottomMargin;

Чтобы проверить параметры автосбора, включите различные поддерживаемые ориентации устройства в параметрах проекта:

Автоматическое Параметры

В коде позади можно использовать следующий код, который приводит к горизонтальному размеру двух текстовых элементов управления:

textview1.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;
textfield1.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;
imageview1.AutoresizingMask = UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleLeftMargin;

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

Снимок экрана: элемент управления autosizing с выбранным в левом и нижнем углу.

На этих снимках экрана показано, как элементы управления изменить размер или изменить положение при повороте экрана:

Снимок экрана: экран мобильного устройства в книжном и альбомном режиме с измененным текстом и рисунком.

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