Я пытаюсь установить imageView
по стандарту UITableViewCell
из удаленного источника с использованием заполнителя. У меня есть эта проблема независимо от использования SDWebImage
или AlamofireImage
в качестве библиотеки.Предотвращение просмотра изображения UITableViewCell из-за изменения размера при нажатии
Вот как выглядит клетка после начальной загрузки:
Затем, когда клетка прослушивались/Reloaded это выглядит следующим образом:
В раскадровка, я скорректировал высоту строки на 60 пунктов вместо стандартных 44 очков. Если я вернусь к высоте до 44 очков, проблема больше не будет присутствовать.
Я считаю, что эта проблема больше связана с пользовательской высотой ячейки, а не с библиотекой, предоставляющей местозаполнитель. Я сделал вопрос на AlamofireImage in case it was a problem with the library, но, оказывается, это не тот случай.
Как я могу сначала установить изображение в нужном размере или предотвратить изменение размера при перезагрузке?
Вот код моего подкласса UITableViewCell
. Обратите внимание, что проблема возникает, даже если я удаляю код вставки фрейма внутри layoutSubviews
.
class CategoryTableViewCell: UITableViewCell {
var category: Category! {
didSet {
self.updateCategory(category)
}
}
override func layoutSubviews() {
super.layoutSubviews()
self.imageView?.frame = CGRectInset(self.imageView!.frame, 10, 10)
}
private func updateCategory(category: Category) {
self.textLabel?.text = category.name
self.imageView?.sd_setImageWithURL(category.largeImage ?? nil, placeholderImage: UIImage(named: "DefaultCategory"))
}
}
Я теперь также установить следующие переопределения на контроллере представления таблицы, б он не имел никакого эффекта.
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 60;
}
override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 60;
}
У вас есть код, чтобы поделиться? Вы делаете что-нибудь «фанки» с подклассом 'UITableViewCell' (если есть)? Любые конфликтующие ограничения в построителе интерфейса? – BenJammin
Попробуйте установить «heightForRowAtIndexPath» в tableview на 60. или «оцененныйHeightForRowAtIndexPath» – kye
Я добавил код из своего подкласса. Кроме того, нет противоречивых ограничений. – Dwight