2015-07-12 5 views
4

У меня есть UITableViewCell, содержащий только UIImageView, который ограничен супервидом со всех четырех сторон, так что ячейка масштабируется в соответствии с полным изображением.Изменение размера UIImageView после масштабирования Aspect Fit

Для параметра UIImageView установлено значение Scale Aspect Fit, чтобы размеры больших изображений изменялись в соответствии с шириной ячейки. Однако после того, как имеет место соответствие аспекту, UIImageView остается того же размера, что и до масштабирования, и ячейка, в свою очередь, сохраняет размер большего, немасштабированного изображения.

Есть ли какой-либо путь в интерфейсе Builder, чтобы заставить высоту UIImageView уменьшаться, когда изображение уменьшено с помощью свойства Fit? Или, в равной степени, есть ли какой-либо способ программно сообщить UIImageView, чтобы изменить его высоту в соответствии с недавно увеличенной высотой UIImage?

+0

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

+0

Эй! Я знаю, что прошло некоторое время с тех пор, как вы разместили это, но не могли бы вы поделиться своим программным решением? Было бы полезно, если бы вы могли отредактировать свой вопрос, чтобы показать это. Благодаря! – penatheboss

+0

Боюсь, что я больше не участвую в этом проекте, надеюсь, кто-то еще войдет. –

ответ

3

Я столкнулся с подобной проблемой при встраивании UIImageView в UIStackView. Я считаю это ошибкой, потому что, когда изображение имеет режим: AspectFit, тогда несвязанное измерение, как ожидается, изменится на масштабированное изображение вместо оригинала.

Мой обходной путь был:

  1. создано ограничение по высоте с идентификатором для представления изображения, например, «ConstraintImageHeight»
  2. в коде после ввода нового изображения в поле зрения, ограничение сбрасывается на расчетную высоту, например:

    imgView.image = picture; for c in imgView.constraints { if c.identifier == "constraintImageHeight" { c.constant = picture.size.height * imgView.bounds.width/picture.size.width; break; } }

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