Я разрабатываю раздел моего приложения с помощью UITableView. Я добавил это программно с этим набором ограничений. Я не рассматриваю нижнюю безопасную область, потому что хочу содержимое поверх нее.
NSLayoutConstraint.activate([
tableView.topAnchor.constraint(equalTo: customHeader.bottomAnchor),
tableView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
tableView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
tableView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
])
Итак, я заметил странное поведение индикатора прокрутки:
зеленый - customHeader
, синий - это цвет фона tableView, а оранжевый - первая ячейка. Когда я опускаю табличное представление и достигаю первой ячейки, индикатор прокрутки находится не в нулевом положении, а только графически. На самом деле tableView.scrollIndicatorInsets.top
- это ноль.
Поэтому я попытался установить его, например, на -20, и индикатор прокрутки имеет ноль позади customHeader
, как и ожидалось. Таким образом, он начинает появляться за пределами tableView.
Я попытался установить tableView.scrollIndicatorInsets.top = .leastNonZeroMagnitude
, и это работает. Теперь индикатор начинается с нуля.
Я изучил это поведение и обнаружил, что если изменить нижнее ограничение с:
tableView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
на:
tableView.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor)
все работает нормально, без необходимости вручную устанавливать положение индикатора прокрутки. Но таким образом я теряю возможность просмотра содержимого таблицы в безопасной области. Я думал, что это может быть проблемой automaticallyAdjustScrollViewInsets
для v c, над которым я работаю, но это не тот случай.
Любой совет по этому поводу? Я думаю, что это ошибка. Я работаю с Xcode 11.4 и Swift 5.2.
Спасибо.