自定义 UITtableViewCell 的布局约束不起作用
Posted
技术标签:
【中文标题】自定义 UITtableViewCell 的布局约束不起作用【英文标题】:Layout constraints for custom UITtableViewCell not working 【发布时间】:2017-01-03 12:02:07 【问题描述】:我正在创建自定义 UITableViewCells,其中每个都有一个 UILabel,但除了单元格的左上角 looks like this 之外,无法让标签显示在任何其他位置。
约束似乎尚未应用,但它们正在被调用(到达断点)。我尝试用 UIImageView 替换 UILabel 并应用相同的约束,但没有出现任何内容(即表格视图单元格为空白)。
我错过了什么?
查看单元格:
import UIKit
class myTableViewCell: UITableViewCell
override init(style: UITableViewCellStyle, reuseIdentifier: String!)
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupViews()
required init?(coder decoder: NSCoder)
super.init(coder: decoder)
let label: UILabel =
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.font = UIFont.systemFont(ofSize: 16, weight: UIFontWeightLight)
label.text = "Sample"
label.backgroundColor = UIColor.red
return label
()
func setupViews ()
addSubview(label)
//add constraints
let marginsGuide = self.contentView.layoutMarginsGuide
label.leadingAnchor.constraint(equalTo: marginsGuide.leadingAnchor).isActive = true
label.trailingAnchor.constraint(equalTo: marginsGuide.trailingAnchor).isActive = true
label.topAnchor.constraint(equalTo: marginsGuide.topAnchor).isActive = true
label.bottomAnchor.constraint(equalTo: marginsGuide.bottomAnchor).isActive = true
视图控制器:
import UIKit
class myViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
var myTableView: UITableView = UITableView()
var myArray = [Int]()
override func viewDidLoad()
super.viewDidLoad()
//... do stuff incl. loading data into my myArray
let screenSize: CGRect = UIScreen.main.bounds
self.myTableView.frame = CGRect(x: 0, y: 0, width: screenSize.width, height: screenSize.height)
self.myTableView.delegate = self
self.myTableView.dataSource = self
self.myTableView.register(IngredientListTableViewCell.self, forCellReuseIdentifier: "cell")
self.view.addSubview(myTableView)
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return myArray.count
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = self.myTableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! myTableViewCell
return cell
【问题讨论】:
【参考方案1】:改变这个
addSubview(label)
到这里
contentView.addSubview(label)
【讨论】:
有效。注意到 self.contentView.addSubview(label) 也有效。你能帮我理解发生了什么吗? 在表格视图单元格中,始终使用内容视图。该视图用于单元格的内容。由此得名。您的代码不起作用,因为您使用了内容视图 (let marginsGuide = self.contentView.layoutMarginsGuide
) 的边距,但将子视图添加到了单元格本身。以上是关于自定义 UITtableViewCell 的布局约束不起作用的主要内容,如果未能解决你的问题,请参考以下文章
python编写自定义函数计算约登值(约登指数Youden Index)寻找最佳阈值(thresholdcutoff)以及最佳阈值对应的ROC曲线中的坐标点
iOS UICollectionView自定义流水布局(一)