我试图在UITableView中将节标题标签居中。我正在使用以下代码:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
guard let header = view as? UITableViewHeaderFooterView else { return }
header.textLabel?.textAlignment = .center
}
这大部分时间都有效,除了应用首次加载时第一部分标题的标签。它保持对齐。其余的居中。如果我向下滚动然后向上滚动,则第一部分标题标签将居中。如何为初始加载修复此问题?
答案 0 :(得分:0)
如果您使用
tableView (_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?
您可以通过调用setNeedsLayout()来代替自定义UITableViewHeaderFooterView。
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
guard let header = view as? UITableViewHeaderFooterView else {return}
header.textLabel?.textAlignment = .center
header.setNeedsLayout()
}
另一种方式
子类化UITableViewHeaderFooterView并在函数下方使用
func register(_ nib: UINib?, forHeaderFooterViewReuseIdentifier identifier: String)
func register(_ aClass: AnyClass?, forHeaderFooterViewReuseIdentifier identifier: String)
tableView (_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
您可以设置
textLabel.aligment = .center
在子类的构造函数中。