У меня есть изображение в ячейке tableview tableview. то, что я хочу добиться того, он должен изменить размер ImageView в соответствии с изображением его содержат dynamically.Currently я его так:Раскадровка изображения в ячейке tableview
0
A
ответ
0
У меня был точно такой же вопрос не так давно.
Во-первых, вы должны установить режим содержимого изображения в Aspect Fit, НО НО этого недостаточно.
Вам нужно будет изменить ограничение соотношения сторон изображенияViewView каждый раз, когда вы хотите загрузить новое изображение. В принципе, то, что вам нужно сделать, это:
- Получить ширину и высоту
- Рассчитайте соотношение сторон вашего изображения
let aspectRatio = Float(image.height)/Float(image.width)
- Используйте этот формат изображения, чтобы создать новое соотношение сторон ограничение для вашего зрения изображения.
Это копия (с добавленными комментариями) моего кода, где я справился с этой проблемой. Надеюсь, это поможет вам.
// aspectRatioCnst is IBOutlet reference to aspect ratio constraint I've set on mainImageView in Storyboard
if let aspectRatioCnst = aspectRatioCnst {
aspectRatioCnst.isActive = false
}
let aspectRatio = Float(imagePost.height)/Float(imagePost.width)
aspectRatioCnst = NSLayoutConstraint(
item: self.mainImageView,
attribute: NSLayoutAttribute.height,
relatedBy: NSLayoutRelation.equal,
toItem: self.mainImageView,
attribute: NSLayoutAttribute.width,
multiplier: CGFloat(aspectRatio),
constant: 0)
if let aspectRatioCnst = aspectRatioCnst {
self.mainImageView.addConstraint(aspectRatioCnst)
aspectRatioCnst.isActive = true
self.mainImageView.layoutIfNeeded()
}
if let image = imagePost.loadedImage {
self.mainImageView.image = image
} else if let imageURL = URL(string: imagePost.fileURL) {
DispatchQueue.global(qos: .background).async {
// UIImage extension with downloadedFromURL method
UIImage.downloadedFromURL(url: imageURL, withCallback: { (image) -> (Void) in
DispatchQueue.main.async {
self.imageLoadingActivityIndicator.stopAnimating()
self.mainImageView.image = image
self.imagePost?.loadedImage = image
}
})
}
}
0
Сначала установите нижнюю содержание в высоту, как это,
Затем установите ваше изображение ограничивает, как это,
Затем сделать это в коде,
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let imageNew = UIImage(named: "test") //Set your image here
let oldWidth = imageNew!.size.width
let scaleFactor = tableView.frame.size.width/oldWidth
let newHeight = imageNew!.size.height * scaleFactor
let newWidth = oldWidth * scaleFactor
//Finally to get cell size just add the bottom part height for othercontents to ImageHeight here
let CellSize = CGSize(width: newWidth, height: (newHeight + 40))
return CellSize.height
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! TableViewCell
cell.NewImage.image = UIImage(named: "test")
return cell
}
Смежные вопросы
- 1. Как изменить положение изображения в ячейке TableView?
- 2. Показать изображения большого размера в ячейке tableview
- 3. Чтобы убрать перекрывающиеся изображения в ячейке tableview
- 4. Уменьшение изображения значка в ячейке tableView
- 5. Отображение изображения программно в Tableview ячейке
- 6. tableView initwithframe и раскадровка
- 7. Изображение в ячейке Tableview
- 8. Ошибка в ячейке TableView
- 9. iOS tableview cell segue раскадровка
- 10. изображения в ячейках tableview
- 11. Сделать переключатель в ячейке Tableview, открыть новые строки в tableview
- 12. Установите флажок в ячейке tableview
- 13. Сохранить флажок в ячейке TableView?
- 14. добавление кнопок в ячейке tableView
- 15. Изменение изображения при выборе в ячейке tableview - Swift
- 16. Быстрое отображение изображения синтаксического анализа в ячейке TableView
- 17. Пользовательская метка не отображается в пользовательской ячейке. Раскадровка
- 18. Добавление изображения в ячейку tableview: раскадровка или программно, или и то, и другое?
- 19. Изменение отображения/размеров UIImageView в ячейке tableview
- 20. Настройка синтаксического анализа изображений в ячейке tableView
- 21. Использование UIImagePickerController в каждой ячейке tableview
- 22. Swift: градиент на ячейке Tableview
- 23. многомерный массив в ячейке в TableView
- 24. Как изменить размер изображения в ячейке?
- 25. Как исправить повторяющиеся изображения в ячейке таблицы?
- 26. ScrollView с пейджингом в ячейке TableView
- 27. Autoresizing UIImageView в ячейке TableView с Autolayout
- 28. Как отобразить несколько строк в ячейке tableView
- 29. UIImageView в ячейке мерцает, когда tableView reloadData
- 30. Высота настраивается на содержимое в ячейке TableView?
, что если изображение загружается асинхронно. Тогда как код будет знать высоту и ширину изображения? –
Это хороший момент. Я думал, что мне тоже не придется копировать эту часть, но, поскольку вы спросили, я обновил свой ответ. Постскриптум В ответе JSON, который указывает на URL-адрес изображения, я получаю высоту и ширину изображения, поэтому мне не нужно его вычислять. – JPetric
В принципе, я сначала загружаю все метаданные изображений, где у меня есть высота и ширина каждого изображения и URL, где я могу загрузить изображение. И затем, когда я деактивирую ячейки таблицы, я просто асинхронно загружаю изображения. Надеюсь, я немного это объяснил. – JPetric