Как изменить размер ячейки таблицы с изображением? - PullRequest
1 голос
/ 28 мая 2020

Я пытаюсь сделать приложение для поиска рецептов. Я пытаюсь получить результаты из API, а также изображение, связанное с этими результатами, и отобразить их в виде таблицы, используя базовую c ячейку табличного представления.

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

Вот как это выглядит до установки ограничений: https://imgur.com/srmKJtV

Вот как это выглядит после установки ограничений: https://imgur.com/DFLviBK

Это мой код, который я использую для настройки ячейки:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "recipe", for: indexPath)
         
    cell.imageView?.translatesAutoresizingMaskIntoConstraints = false
    cell.imageView?.heightAnchor.constraint(equalToConstant: 100).isActive = true
    cell.imageView?.widthAnchor.constraint(equalToConstant: 100).isActive = true
    cell.imageView?.image = recipeResults[indexPath.row].image
  
    cell.textLabel?.numberOfLines = 0
    cell.textLabel?.text = "\(recipeResults[indexPath.row].title)"
            
    return cell
}

Кто-нибудь знает, как я могу сохранить изображение размером 100x100 и красиво выровнять текст в каждой строке?

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

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Использовать пользовательскую ячейку вместо ячейки basic.

Таким образом вы сможете настроить, какой компонент вам нужен.

  • Создайте свою собственную ячейку с помощью .xib или Interface Builder

  • Добавьте горизонтальный UIStackView в ячейку и ограничьте его leading, trailing, top и bottom.

  • Добавьте imageView и label к stackView. Вы должны установить ограничение width на свой imageView. В вашем случае это жестко запрограммировано 100.

0 голосов
/ 28 мая 2020

Недостаточно установить ограничения ширины и высоты для UIImage.

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

...