пользовательский слайдер диапазона, скрытый в представлении таблицы - PullRequest
1 голос
/ 12 марта 2019

Я создал пользовательский ползунок диапазона в проекте iOS, используя это руководство: https://www.raywenderlich.com/7595-how-to-make-a-custom-control-tutorial-a-reusable-slider

Использование Xcode 10.1 и Swift 4.2.1.

Единственная разница в том, что я удалил часть viewDidLayoutSubviews(), потому что я сделал это в раскадровке. Здесь я поместил UIView в раскадровку, установил его ограничения, установил класс RangeSlider и создал @IBOutlet weak var rangeSlider: RangeSlider! в контроллере представления.

Я использую статическое табличное представление, но с динамической высотой ячейки:

override func viewDidLoad() {
    ...
    self.tableView.rowHeight = UITableView.automaticDimension
    self.tableView.estimatedRowHeight = 80.0
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableView.automaticDimension
}

Если я изменю размер шрифта, высота ячеек будет адаптирована, чего я и хочу, но каким-то образом ячейка с rangeSlider в ней покрывает половину rangeSlider. Не имеет значения, играю ли я с размером шрифта, поворачиваю экран и т. Д. Он всегда покрыт.

enter image description here

Может кто-нибудь помочь? Я что-то упустил?

1 Ответ

2 голосов
/ 13 марта 2019

Чтобы автоматическое измерение работало, у вас должна быть непрерывная цепочка ограничений от вершины contentView до низа, и каждый элемент в этой цепочке должен иметь явную высоту или intrinsicContentSize.

Из того, что я могу сказать из учебника, они не определяют intrinsicContentSize для пользовательского слайдера. UIKit предоставляет элементы управления, которые имеют intrinsicContentSize ограничение ширины и высоты, равное их intrinsicContentSize, если вы не ограничите их иным образом. Итак, 1) реализовать intrinsicContentSize или 2) вручную добавить фиксированное ограничение высоты IN ADDTION TO ограничение сверху и снизу для представления содержимого tableViewCell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...