Как установить высоту подкласса UISegmentedControl без использования автоматического макета? - PullRequest
0 голосов
/ 20 мая 2019

Я создал подкласс UISegmentedControl, который я хотел бы использовать в качестве представления заголовка раздела для UITableView.

Я бы хотел, чтобы пользовательский подкласс UISegmentedControl имел высоту 50 пт.

Я знаю, что могу создать ограничение высоты для этого. Однако после установки ограничения по высоте, если этот сегментированный элемент управления используется в качестве заголовка раздела представления таблицы, отображаются ошибки автоматического размещения (см. question ).

Я попытался установить высоту, вызвав метод init (frame :) с соответствующей высотой, но это не имеет никакого эффекта.

Есть ли способ установить высоту подкласса UISegmentedControl без использования автоматического макета?

1 Ответ

0 голосов
/ 20 мая 2019

Вы можете просто использовать frames для установки size и position из UISegmentedControl внутри sectionHeaderView, т.е.

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let view = UIView()
    let segmentedControl = UISegmentedControl(frame: CGRect(x: 10, y: 10, width: 200, height: 50))
    segmentedControl.insertSegment(withTitle: "First", at: 0, animated: false)
    segmentedControl.insertSegment(withTitle: "Second", at: 1, animated: false)
    segmentedControl.selectedSegmentIndex = 0
    view.addSubview(segmentedControl)
    return view
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 70
}

Снимок экрана:

enter image description here

...