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