UITableViewCell
и UICollectionViewCell
управляют своими contentView
вручную.Другими словами, UIKit
полагается на то, что contentView
ячеек имеет значение translatesAutoresizingMaskIntoConstraints равное True
, поэтому изменение свойства translatesAutoresizingMaskIntoConstraints
для contentView объекта UITableViewCell не поддерживается и приведет к неопределенному поведению.
Не делайте этого:
cell.contentView.translatesAutoresizingMaskIntoConstraints = false
Итак, вот полная функция для добавления UIView
в UITableViewCell должна выглядеть следующим образом:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
//if already added the subview?
if cell.contentView.subviews.count == 0 {
let view = UIView() //your pinkView
view.translatesAutoresizingMaskIntoConstraints = false
view.backgroundColor = UIColor.purple
cell.contentView.addSubview(view)
view.centerXAnchor.constraint(equalTo: cell.contentView.centerXAnchor).isActive = true
view.centerYAnchor.constraint(equalTo: cell.contentView.centerYAnchor).isActive = true
view.widthAnchor.constraint(equalToConstant: 50.0).isActive = true
view.heightAnchor.constraint(equalToConstant: 50.0).isActive = true
}
return cell
}