У меня есть пользовательские 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()
Какие ограничения у вас есть на postImage? В общем случае не рекомендуется устанавливать кадр, когда вы используете автоматическую компоновку. Скорее, лучше сами устанавливать ограничения. – beyowulf
@beyowulf У меня такие же ограничения, как в [моем вопросе с прошлой недели] (https://stackoverflow.com/questions/33794042/uilabel-not-getting-contents-immediately) - вы можете наблюдать за барами над верхним краем изображения внизу моих скриншотов. В основном это ограничено вершиной для супервизора и нижней частью метки содержимого. –
Что определяет высота ячейки, добавление + высота изображения + дополнение + высота надписи + заполнение? – beyowulf