Как правильно закрепить UIImage в UIView, расположенном в пользовательской ячейке? - PullRequest
0 голосов
/ 17 мая 2019

Итак, я создал собственную ячейку для моего UITableViewController. В этой пользовательской ячейке я создаю UIView, которому я даю UIImageView и UILabel. У меня проблема в том, что изображение появляется позади моего UIView. И контейнер для UIImageView и UILabelView находятся в правильном месте, но когда я передаю UIImage на UIImageView, изображение появляется сзади и не занимает его на правильном месте, несмотря на привязку.

Текущие результаты: Я дал UIViews, UIImageView и UILabel цвет фона, чтобы показать, где они находятся. Прилагается скриншот того, как это выглядит в настоящее время.

На снимке экрана.

enter image description here

Розовый Квадрат UIImageView.

Зеленый прямоугольник - это UILabel.

Синий прямоугольник - это UIView, к которому привязаны UIImageView и UILabel.

Изображение скрыто за этими видами.

class CustomCell: UITableViewCell{
var cellView: UIView = {
    var cellV = UIView()
    cellV.backgroundColor = UIColor(red: 0, green: 0, blue: 170, alpha: 0.8)
    cellV.addShadow()
    return cellV
}()

var mainImage: UIImageView = {
    var img = UIImageView()
    img.contentMode = .scaleAspectFit
    img.backgroundColor = UIColor(red: 110, green: 0, blue: 12, alpha: 0.3)
    return img
}()

var imageLabel: UILabel = {
    var lbl = UILabel()
    lbl.backgroundColor = .green
    return lbl
}()


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

func setUp(){
    self.addSubview(cellView)
    cellView.addSubview(mainImage)
    cellView.addSubview(imageLabel)

    cellView.anchor(top: self.topAnchor,
                     leading:self.leadingAnchor,
                     bottom: self.bottomAnchor,
                     trailing: self.trailingAnchor,
                     centerXaxis: nil,
                     centerYaxis: nil,
                     padding: .init(top: 4, left: 8, bottom: 4, right: 8))

    mainImage.anchor(top: nil,
                     leading: cellView.leadingAnchor,
                     bottom: nil,
                     trailing: nil,
                     centerXaxis: nil,
                     centerYaxis: cellView.centerYAnchor,
                     padding: .init(top: 2, left: 2, bottom: 2, right: 0),
                     size: .init(width: 55, height: 55) )

    imageLabel.anchor(top: cellView.topAnchor,
                      leading: mainImage.trailingAnchor,
                      bottom: cellView.bottomAnchor,
                      trailing: trailingAnchor,
                      centerXaxis: nil,
                      centerYaxis: nil,
                      padding: .init(top: 4, left: 8, bottom: 4, right: 8))

}

required init?(coder aDecoder: NSCoder) {
   fatalError("init(coder:) has not been implemented")
}

}

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

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = tableView.dequeueReusableCell(withIdentifier: customCellID, for: indexPath) as? CustomCell else {fatalError("Couldn't make it work")}
    let profileCard = profile[indexPath.row]
    let path = getDocumentsDirectory().appendingPathComponent(profileCard.mainImage)
    cell.imageView?.image = UIImage(contentsOfFile: path.path)
    cell.imageLabel.text = profileCard.imageLabel
    return cell
}

1 Ответ

1 голос
/ 17 мая 2019

Вы устанавливаете изображение на imageView ячейки .Вы должны установить изображение mainImage вместо:

cell.mainImage.image = UIImage(contentsOfFile: path.path)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...