【发布时间】:2018-05-08 08:47:40
【问题描述】:
我正在尝试使用定义 UITableViewCell 的类来编写没有 Storyboard 的 UITableViewController。
我根据需要配置了表格视图
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 200.0
tableView.register(HomeCell.self, forCellReuseIdentifier: "cell")
并创建了一个只有一个图标的HomeCell UITableViewCell 类。
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
icon = UIImageView(frame: CGRect.zero);
icon.translatesAutoresizingMaskIntoConstraints = false;
contentView.addSubview(icon)
}
我在类中插入了用于自动布局的函数,并通过调试控制了该函数的调用:
override func layoutSubviews() {
icon.heightAnchor.constraint(equalToConstant: 50).isActive = true
icon.widthAnchor.constraint(equalToConstant: 50).isActive = true
icon.leftAnchor.constraint(equalTo: contentView.leftAnchor,
constant: 5).isActive = true
icon.topAnchor.constraint(equalTo: contentView.topAnchor,
constant: 5).isActive = true
contentView.bottomAnchor.constraint(equalTo: icon.bottomAnchor, constant: 5).isActive = true
}
结果是我的图标在正确的位置,但是contentView的高度错误,即UITableViewAutomaticDimension设置的44的原始大小,连续行重叠。
有人知道出了什么问题吗?
【问题讨论】:
-
底部锚点
isActive不见了? -
layoutSubviews 被多次调用,您的代码有效地多次添加相同的约束集,这无论如何都不需要,因此请将所有添加约束的代码移至 init
-
对不起,是一个错误的副本,但结果是内容视图的高度相同并且图标被压缩了。
标签: ios swift uitableview autolayout