Заголовок UITableView выравнивается по границам ячеек - PullRequest
0 голосов
/ 04 марта 2019

Я создаю собственный вид заголовка для моего 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 голосов
/ 04 марта 2019

Кажется, проблема с позицией вашей верхней и нижней линий.Согласно расчету offset он всегда установлен на 0 для верхней и нижней линий.Поэтому было бы лучше удалить это вычисление offset, и вы можете добавить некоторое желаемое статическое значение в виде x для CGRect верхних и нижних линий.

Поскольку мы собираемся переместить позицию x для верхней и нижней линии, не забудьте удалить добавленное значение для позиции x из ширины верхней и нижней линий.

let yourLine = UIView(frame: CGRect(x: some_value, y: 0, width: Int(lineWidth - (some_value * 2)), height: 1))

Рекомендуется использовать некоторые переменные для достижения этой цели.

Надеюсь, приведенное выше описание поможет вам.

0 голосов
/ 04 марта 2019

Ваш 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

Измените это на код ниже и попробуйте

let lineWidth = tableView.bounds.width - 20
let topLine = UIView(frame: CGRect(x: 10, y: 0, width: lineWidth, height: 1))
...