У меня есть представление изображения, объявленное программно, и я устанавливаю его изображение также программно.
Однако я не могу настроить изображение так, чтобы оно соответствовало аспекту и выровняло центр по виду изображения.
Другими словами, я хочу, чтобы изображение:
- Уменьшите, чтобы соответствовать аспекту, если изображение большое.
- Центрируйте, но не увеличивайте масштаб, если изображение маленькое.
Как мне это получить?
ios
objective-c
uiimageview
uiimage
Рави Вуда
источник
источник
Ответы:
Просто вставьте решение:
Как сказал @manohar
решил мою проблему
источник
CGRectContainsRect(imageView.bounds, {CGPointZero, image.size})
CGSize imageSize = ((UIImage*)imagesArray[i]).size;
,CGSize viewSize = imageView.bounds.size
,if (viewSize.width > imageSize.width && viewSize.height > imageSize.height) {
.В быстром языке мы можем установить режим содержимого представления UIImage следующим образом:
источник
стриж
Вы можете использовать следующие параметры для позиционирования изображения:
scaleToFill
scaleAspectFit
// содержимое масштабируется, чтобы соответствовать фиксированному аспекту. остаток прозраченredraw
// перерисовываем изменение границ (вызывает -setNeedsDisplay)center
// содержимое остается того же размера. позиционируется отрегулировано.top
bottom
left
right
topLeft
topRight
bottomLeft
bottomRight
источник
Обновленный ответ
Когда я первоначально ответил на этот вопрос в 2014 году, не было требования не увеличивать изображение в случае маленького изображения. (Вопрос был отредактирован в 2015 году .) Если у вас есть такое требование, вам действительно нужно сравнить размер изображения с размером изображения и использовать либо
UIViewContentModeCenter
(в случае изображения меньше, чем изображение) илиUIViewContentModeScaleAspectFit
во всех других случаях. ,Оригинальный ответ
UIViewContentModeScaleAspectFit
Для меня было достаточно установить contentMode для imageView . Кажется, что центрирование изображений также. Я не уверен, почему другие используют логику, основанную на изображении. Смотрите также вопрос: IOS аспект подгонку и центристочник
Я решил эту проблему следующим образом.
UIImageView
(сUIViewContentModeScaleAspectFit
)(CGSize imageSize = imageView.image.size)
UIImageView
размер.[imageView sizeThatFits:imageSize]
Я хотел поставить UIView в верхнем центре
UICollectionViewCell
. Итак, я использовал эту функцию.Меня устраивает.
источник
Этот подкласс использует центр, если изображение не больше, чем представление, в противном случае оно уменьшается. Я нашел это полезным для
UIImageView
изменения размера.Отображаемое изображение меньше, чем вид для больших размеров, но больше, чем вид для небольших размеров. Я хочу, чтобы это только уменьшало, но не увеличивало.
источник
Вы можете достичь этого, установив режим отображения содержимого для UIViewContentModeScaleAspectFill.
Затем используйте следующий метод метода, чтобы получить измененный объект uiimage.
Отредактировано здесь (Swift Version)
источник
источник
источник
Для тех, кто ищет изменение размера UIImage,
источник