UITableView - 部分的页脚 - iPhoneX.



我在使用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)
    ])
}

最新更新