UITableView标头与单元格边界对齐

时间:2019-03-04 08:40:36

标签: ios uitableview uikit uitableviewsectionheader

我正在为UITableView生成一个自定义标题视图,该视图具有上下两个水平线以及之间的UILabel。

    let lineWidth = tableView.bounds.width //This is not correct, will never align with UITableViewCell
    let offset = (tableView.bounds.width - lineWidth)/2 //This will always yield 0, but my question is to compute line width that aligns with UITableViewCell as shown in the image attached to this question.
    let topLine = UIView(frame: CGRect(x: offset, y: 0, width: lineWidth, height: 1))
    topLine.backgroundColor = UIColor.white
    let bottomLine = UIView(frame: CGRect(x: offset, y: 49.0, width: lineWidth, height: 1))
    bottomLine.backgroundColor = UIColor.white
    let label = UILabel(frame: CGRect(x: 0, y: 1.0, width: tableView.bounds.width, height: 48.0))
    label.textColor = UIColor.white

    let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.width, height: 50))
    headerView.addSubview(topLine)
    headerView.addSubview(label)
    headerView.addSubview(bottomLine)

问题:我需要顶行和底行与本节中的UITableViewCell边界对齐,如下图所示。我在上面的代码中得到的是覆盖UITableView整个宽度的水平线。我该如何实现?

编辑:这里的一些答案描述了一个任意的偏移量值,但是问题的核心是如何计算与本节中的UITableViewCell边界对齐的偏移量?换句话说,我需要该部分中的UITableViewCell的确切宽度。

enter image description here

2 个答案:

答案 0 :(得分:0)

当您减去相同的内容时,您的val f: ((Circle) -> Float) -> Unit = if (ascending) ({ circles.sortBy(it) }) else ({ circles.sortByDescending(it) }) f { it.radius } 实际上将是Offset

zero

将其更改为以下代码,然后尝试

let lineWidth = tableView.bounds.width
let offset = (tableView.bounds.width - lineWidth)/2
let topLine = UIView(frame: CGRect(x: offset, y: 0, width: lineWidth, height: 1)) // this line gonna give offset as zero and width of full tableview width

答案 1 :(得分:-1)

您的顶行和底行的位置似乎有问题。根据{{​​1}}的计算,始终将顶行和底行设置为offset。因此最好删除0计算,然后可以为顶部和底部行offset的{​​{1}}添加一些所需的静态值。

只要我们要移动顶行和底行的x的位置,别忘了从顶行和底行的宽度中删除CGRect位置的附加值

x

最佳做法是您可以使用一些变量来实现这一目标。

希望以上说明对您有所帮助。