我正在尝试以编程方式创建约束,以将这个粉红色的UIView放在UITableViewCell中。但是,当我添加约束时,它们不适用,并且在控制台中收到一条消息,提示某些NSAutoresizingMaskLayoutConstraints
无法同时满足。
因此,当我设置cell.contentView.translatesAutoresizingMaskIntoConstraints = false
时,会在控制台中收到此消息:
“不支持更改UITableViewCell的contentView的translatesAutoresizingMaskIntoConstraints属性,这将导致未定义的行为,因为此属性由拥有的UITableViewCell管理。”
视图确实居中,但是控制台说我不应该更改此属性。
我该如何实现?
Before setting the property to false
After setting the property to false
非常感谢您。
答案 0 :(得分:1)
UITableViewCell
和UICollectionViewCell
手动管理其contentView
。换句话说,UIKit
依赖于单元格的contentView
,其translatesAutoresizingMaskIntoConstraints为True
,因此不支持更改UITableViewCell的contentView的translatesAutoresizingMaskIntoConstraints
属性,这将导致未定义行为。
不要这样做:
cell.contentView.translatesAutoresizingMaskIntoConstraints = false
因此,这是在UITableViewCell中添加UIView
的完整功能,如下所示:
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
}
答案 1 :(得分:0)
您无需将translatesAutoresizingMaskIntoConstraints = false
设置为表视图单元格的contentView
。
您只需将translatesAutoresizingMaskIntoConstraints = false
设置为动态添加的视图,默认情况下将IBOutlets
translatesAutoresizingMaskIntoConstraints = false
设置为该视图。