我正在为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的确切宽度。
答案 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
最佳做法是您可以使用一些变量来实现这一目标。
希望以上说明对您有所帮助。