2016-10-18 1 views
0

У меня есть табличный вид с ячейками для самостоятельной калибровки, где я показываю изображение. Режим содержимого изображения - AspectFit, так что я могу видеть все изображение в правильном соотношении сторон. Вид изображения ограничен супервидом, но также имеет максимальное ограничение высоты.Почему UIImageView в ячейке просмотра таблицы размеров размера имеет оригинальную высоту с режимом содержимого AspectFit?

Если у меня есть изображение, которое изменено в соответствии с режимом содержимого и, следовательно, менее высоким, чем исходный размер, я хочу, чтобы высота изображения выглядела так же, как и размер изображения, а не как исходное изображение.

У меня есть пример проекта (см. Снимок экрана & ниже), где вы видите текущее поведение: желтые и зеленые ячейки имеют правильное верхнее и нижнее пространство, синяя ячейка - 150 пт, но она должна быть меньше имеют одно и то же верхнее и нижнее пространство. На скриншоте вы можете видеть, что дополнительное верхнее и нижнее пространство просто пусто.

enter image description here

Вот мой пример проекта (Swift 3):

https://www.dropbox.com/s/16i48qnm54fktdk/Test.zip?dl=0

ли имеет ключ, как исправить это кто-нибудь?

ответ

0

Одна вещь, которую вы можете сделать, - выровнять изображение в вертикальном и горизонтальном направлениях в центре супервизора и присвоить ему длину и высоту манекена. Сделайте выходы для ограничений ширины и высоты внутри ячейки. Затем вы можете изменить размер изображения в соответствии с шириной экрана, поддерживающим соотношение сторон, и установите высоту и ширину изображения в размере изображения. В heightForRowAtIndexPath вам нужно будет установить высоту ячейки на основе значения, которое вы получите для imageView.size.height после изменения размера

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

0

К сожалению, sizeToFit() не работает на UIImageView. Однако вы можете установить testImageViewHeightConstraint на высоту изображения.

if let imageHeight = cell.testImageView.image?.size.height, imageHeight < cell.testImageViewHeightConstraint.constant { 
    print(imageHeight) // this is not the correct height of your image 
    cell.testImageViewHeightConstraint.constant = //your image height 
} 

НО, нет способа получить высоту изображения после применения aspectFit. Единственный способ получить это - реализовать собственную функцию самостоятельно. Вы можете увидеть этот пост: How to know the image size after applying aspect fit for the image in an UIImageView

Вы можете установить ваш testImageViewHeightConstraint.constant в 50 первый, просто чтобы убедиться, что мое предложение работает :)

 Смежные вопросы

  • Нет связанных вопросов^_^