imageview внутри uitableviewcell разрушает ячейку - PullRequest
2 голосов
/ 18 октября 2019

Это ячейка табличного представления с изображением

class ChatTableViewCell: UITableViewCell {

    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)


        self.contentView.addSubview(userImageView)

        userImageView_constraints()

        }

        var userImageView: UIImageView = {
        let imageView = UIImageView()
        let imageViewHeightAndWidth: CGFloat = 55
        let image = UIImage(named: "steve")
        imageView.image = image
        imageView.clipsToBounds = true
        imageView.layer.cornerRadius = imageViewHeightAndWidth / 2
        imageView.translatesAutoresizingMaskIntoConstraints = false
        return imageView
    }()


func userImageView_constraints(){
    userImageView.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor, constant: 20).isActive = true
    userImageView.topAnchor.constraint(equalTo: self.contentView.topAnchor, constant: 0).isActive = true
    userImageView.widthAnchor.constraint(equalToConstant: 55).isActive=true
    userImageView.heightAnchor.constraint(equalToConstant: 55).isActive=true

}

, и вот код для представления таблицы

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "chatCell", for: indexPath) as! ChatTableViewCell
        return cell
    }

И эта ошибка отображается в консоли

[Предупреждение] Только один раз: обнаружен случай, когда ограничения неоднозначно указывают высоту нуля для представления содержимого ячейки табличного представления. Мы рассматриваем развал непреднамеренно и вместо этого используем стандартную высоту. Cell:>

1 Ответ

0 голосов
/ 18 октября 2019

Вы можете использовать contentView, это не является строго обязательным, я использую прямой self.addSubview()

Так как высота вашего изображения больше, чем высота стандартного ряда. Вы должны либо реализовать высоту с помощью UITableViewDelegate метода heightForRow, где высота больше, чем ваша 55, либо добавить нижний якорь: userImageView.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true

...