Итак, я создал собственную ячейку для моего UITableViewController
. В этой пользовательской ячейке я создаю UIView, которому я даю UIImageView
и UILabel
. У меня проблема в том, что изображение появляется позади моего UIView
. И контейнер для UIImageView
и UILabelView
находятся в правильном месте, но когда я передаю UIImage
на UIImageView
, изображение появляется сзади и не занимает его на правильном месте, несмотря на привязку.
Текущие результаты:
Я дал UIViews, UIImageView
и UILabel
цвет фона, чтобы показать, где они находятся. Прилагается скриншот того, как это выглядит в настоящее время.
На снимке экрана.
Розовый Квадрат 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
}