2015-11-24 3 views
1

У меня есть пользовательские TableViewCells с UITableViewAutomaticDimension. Когда я загружаю изображение в ячейку, он почти всегда слишком высок для изображения, и в итоге я получаю большие белые полосы выше и ниже изображения. Я пытаюсь изменить размер UIImageView на тот же размер, что и изображение, но ничего не получится.Как изменить размер UIImageView и заставить ретранслятор родительского UITableViewCell

Я также попытался создать новый UIImageView и установить его, но UIImageView.init(frame: CGRectMake(...)) возвращает nil по какой-то причине. Мой Google-фу не дает мне этого.

Мой код (попытка), чтобы изменить размер ImageView и родительской клетки: (обратите внимание, что i мой новый образ и cell.postImage является IBOutlet типа UIImageView!)

let oFrame = cell.postImage.frame 
let width = oFrame.width 
let height = (i.size.height/i.size.width) * width 
cell.postImage.frame = CGRectMake(oFrame.origin.x, oFrame.origin.y, width, height) 
cell.postImage.contentMode = .ScaleAspectFit 
cell.postImage.image = i 
cell.setNeedsUpdateConstraints() 
cell.setNeedsLayout() 
cell.layoutIfNeeded() 
+0

Какие ограничения у вас есть на postImage? В общем случае не рекомендуется устанавливать кадр, когда вы используете автоматическую компоновку. Скорее, лучше сами устанавливать ограничения. – beyowulf

+0

@beyowulf У меня такие же ограничения, как в [моем вопросе с прошлой недели] (https://stackoverflow.com/questions/33794042/uilabel-not-getting-contents-immediately) - вы можете наблюдать за барами над верхним краем изображения внизу моих скриншотов. В основном это ограничено вершиной для супервизора и нижней частью метки содержимого. –

+0

Что определяет высота ячейки, добавление + высота изображения + дополнение + высота надписи + заполнение? – beyowulf

ответ

0

Установите ширину ограничение для postImage. Создайте IBOutlet для ограничения высоты postImage. Затем скажите что-то вроде:

let oFrame = cell.postImage.frame 
let width = oFrame.width 
let height = (i.size.height/i.size.width) * width 
cell.postImageHeightConstraint.constant = height 

И похоже, что вы хотите, чтобы центр изображения центрировал центр x.

+0

I теперь получите сообщение об устранении ограничений, но оно работает! Должен ли я опубликовать новый вопрос или у вас есть идеи? См. Http://pastebin.com/4Tg8rJj7 –

+0

Думаю, вам нужно установить приоритет высоты изображения на 999, но, не видя этого, я не могу быть уверен. – beyowulf

+0

Все это исправлено. Спасибо за помощь! –

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