Подтвердить что ты не робот

Что такое свойство "Режим" в Interface Builder, которое предлагает "Масштаб для заполнения", "Аспект подходит" и т.д.?

Мне интересно, о чем идет раскрывающийся "Режим"? Он содержит "Масштаб для заполнения", "Аспект подходит" и т.д. Мне никогда не приходилось менять его до сих пор, тем не менее мне любопытно, для чего его можно использовать. Может кто-нибудь объяснить?

4b9b3361

Ответ 1

Просмотр руководства по программированию подробно рассказывает о том, о чем вы спрашиваете. Если вы перейдете к разделу " Режимы контента", вы найдете то, что ищете.

В основном в соответствии с Apple:

"Каждый вид имеет режим содержимого, который управляет тем, как представление перерабатывает его содержимое в ответ на изменения геометрии представлений [...] значение в свойстве contentMode определяет, следует ли масштабировать растровое изображение, чтобы оно соответствовало новым границам или просто привязаны к одному углу или к краю зрения".

Ответ 2

свойство режима содержимого представления сообщает, как его содержимое должно быть выложено. В Interface Builder в Инспекторе атрибутов могут быть выбраны различные режимы.

введите описание изображения здесь

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

введите описание изображения здесь

Масштаб для заполнения

введите описание изображения здесь

Высота и ширина изображения растягиваются в соответствии с размером UIImageView.

Аспект Fit

введите описание изображения здесь

Самая длинная сторона (высота или ширина) изображения растягивается в соответствии с представлением. Это делает изображение настолько большим, насколько возможно, пока оно покажет все изображение, а не искажает высоту или ширину. (Я установил фон UIImageView на синий, чтобы его размер был ясным.)

Аспект заполнения

введите описание изображения здесь

Самая короткая сторона (высота или ширина) изображения растягивается в соответствии с представлением. Как и "Aspect Fit", пропорции изображения не искажаются от их исходного соотношения сторон.

Redraw

введите описание изображения здесь

Перерисовать только для пользовательских представлений, которым необходимо выполнить собственное масштабирование и изменение размера. Мы не используем пользовательский вид, поэтому нам не следует использовать Redraw. Обратите внимание, что здесь UIImageView просто дает нам тот же результат, что и Scale to Fill, но он делает больше работы за кулисами.

О Redraw, documentation говорит:

Режимы содержимого хороши для повторного использования содержимого вашего представления, но вы также можете установить режим содержимого в значение UIViewContentModeRedraw, когда вы в частности, хотите, чтобы ваши пользовательские представления перерисовывались во время операций масштабирования и изменения размера. При настройке режима просмотра ваших представлений это значение заставляет систему вызывать ваши представления drawRect: в ответ на изменения геометрии. В общем, вам следует избегать использования этого значения, когда это возможно, и вы, конечно же, не должны использовать его со стандартными представлениями системы.

Центр

введите описание изображения здесь

Изображение сосредоточено в представлении, но длина и ширина изображения не растянуты.

Top

введите описание изображения здесь

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

Снизу

введите здесь описание изображения

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

Left

введите описание изображения здесь

Левый край изображения центрируется по вертикали слева от представления, а длина и ширина изображения не растянуты.

Right

введите описание изображения здесь

Правый край изображения центрируется по вертикали справа от представления, а длина и ширина изображения не растянуты.

Верхний левый

введите описание изображения здесь

Верхний левый угол изображения расположен в верхнем левом углу окна. Длина и ширина изображения не растянуты.

Вверху справа

введите описание изображения здесь

Верхний правый угол изображения расположен в верхнем правом углу окна. Длина и ширина изображения не растянуты.

Внизу слева

введите описание изображения здесь

Нижний левый угол изображения расположен в левом нижнем углу окна. Длина и ширина изображения не растянуты.

Внизу справа

введите описание изображения здесь

Нижний правый угол изображения расположен в правом нижнем углу окна. Длина и ширина изображения не растянуты.

Примечания

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

  • Смотрите этот и этот вопрос для обсуждения режимов контента для просмотров, отличных от UIImageView.

  • В Swift, чтобы программно установить режим содержимого, вы делаете следующее:

    imageView.contentMode = UIViewContentMode.ScaleToFill
    imageView.contentMode = UIViewContentMode.ScaleAspectFit
    imageView.contentMode = UIViewContentMode.ScaleAspectFill
    imageView.contentMode = UIViewContentMode.Redraw
    imageView.contentMode = UIViewContentMode.Center
    imageView.contentMode = UIViewContentMode.Top
    imageView.contentMode = UIViewContentMode.Bottom
    imageView.contentMode = UIViewContentMode.Left
    imageView.contentMode = UIViewContentMode.Right
    imageView.contentMode = UIViewContentMode.TopLeft
    imageView.contentMode = UIViewContentMode.TopRight
    imageView.contentMode = UIViewContentMode.BottomLeft
    imageView.contentMode = UIViewContentMode.BottomRight