Динамическая ячейка с проблемой изменения размера изображения - PullRequest
0 голосов
/ 15 мая 2019

У меня есть UITableViewCell, у которого есть UIImageView. Пользователи могут публиковать изображения, и они будут отображаться в UITableView (похоже на приложения для социальных сетей / медиа).

Проблема, с которой я столкнулся, заключается в том, что после того, как я создаю свое сообщение и возвращаюсь к основному UITableView, размер ячейки не изменяется соответственно. Но после того, как я прокручиваю, и ячейка выключается, она обновляется до нужного размера.

Поскольку я обрезаю изображения, и они могут быть портретными или альбомными, я рассчитываю соотношение изображений, если они не превышают определенного размера, тогда я устанавливаю постоянную ограничения равной установленному размеру.

Вот код, чтобы увидеть, что я пытаюсь сделать:

override func viewDidLoad() {
    self.myTableView.rowHeight = UITableView.automaticDimension
    self.myTableView.estimatedRowHeight = 500

}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.myTableView.reloadData()
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   cell.myImageView.sd_setImage(with: imageRef, placeholderImage: nil) { (downloadedImage, error, cache, url) in
       if let image = downloadedImage as? UIImage {
           let ratio = image.size.width / image.size.height
           var newHeight = cell.myImageView.frame.width / ratio

            if newHeight >= tableView.frame.width {
                newHeight = tableView.frame.width
            } else {
                newHeight = cell.myImageView.frame.width / ratio
            }

            cell.myImageHeightConstraint.constant = newHeight

            if let indexPath = tableView.indexPath(for: cell) {
                tableView.reloadRows(at: [indexPath], with: .none)
            }
        }
    }
}

Обновление:

Мне кажется, что я все ближе, но у меня все еще есть проблемы. Выше я изменил код. Так что сейчас, когда я делаю свой новый пост и таблица перезагружается, ячейка изменяет размеры с небольшой анимацией. Все в порядке. Желательно, чтобы пользователь НЕ видел, как ячейка анимируется до нужного размера. Следующая проблема, когда я прокручиваю некоторые ячейки, возможно, потребуется изменить размер, и это вызывает некоторую нервозность.

...