我在使用iPhone和UITableView
部分页脚时遇到问题。它被"隐藏"在顶部切口部分后面。
我有这个代码:
override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
var content = "some long text"
let footerView = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 40))
let explanationLabel = UILabel(frame: CGRect(x: 10, y: 0, width: view.frame.size.width - 20, height: 50))
explanationLabel.font = UIFont.systemFont(ofSize: 14, weight: UIFont.Weight.light)
explanationLabel.textColor = UIColor.darkGray
explanationLabel.numberOfLines = 0
explanationLabel.lineBreakMode = .byTruncatingTail
explanationLabel.text = content
footerView.addSubview(explanationLabel)
return footerView
}
我的UITableViewController
是从故事板添加的,并设置了安全区域。我对表格行没有问题,只有部分页脚。
似乎我已经用这段代码解决了这个问题,在footerView.addSubview(explanationLabel)
之后添加:
explanationLabel.translatesAutoresizingMaskIntoConstraints = false
if #available(iOS 11.0, *) {
let guide = footerView.safeAreaLayoutGuide
NSLayoutConstraint.activate([
explanationLabel.topAnchor.constraint(equalTo: footerView.topAnchor),
explanationLabel.leadingAnchor.constraint(equalTo: guide.leadingAnchor, constant: 10),
explanationLabel.trailingAnchor.constraint(equalTo: guide.trailingAnchor, constant: -10),
explanationLabel.bottomAnchor.constraint(equalTo: footerView.bottomAnchor)
])
}
else {
NSLayoutConstraint.activate([
explanationLabel.topAnchor.constraint(equalTo: footerView.topAnchor),
explanationLabel.leadingAnchor.constraint(equalTo: footerView.leadingAnchor, constant: 10),
explanationLabel.trailingAnchor.constraint(equalTo: footerView.trailingAnchor, constant: -10),
explanationLabel.bottomAnchor.constraint(equalTo: footerView.bottomAnchor)
])
}