Самый простой способ найти относительную позицию позиции scrollBar - найти ее текущий процент в scrollView и использовать это значение для определения процента, в котором scrollBar находится в пределах границ.
Позиция ScrollView: (scrollView.contentOffset.y / scrollView.contentSize.height)
Что в основном Current Scrolling Position / Total Height of ScrollView
Давайте назовем это scrollPercent
.
let scrollPercent = (scrollView.contentOffset.y / scrollView.contentSize.height)
Это даст вам% значение от 0 до 1 (0% и 100%).
Вы можете взять scrollPercent
и умножить его на максимальную высоту родительского вида view.bounds.size.height
, чтобы получить приблизительное значение Y полосы прокрутки в представлении.
let scrollBarPosition = scrollPercent * (view.bounds.size.height)
Это можно использовать как значение Y для вашего элемента пользовательского интерфейса.
Когда вы делаете это, убедитесь, что scrollView.contentSize.height
равно> 0, потому что оно начинается с нуля, и если вы попытаетесь разделить на это, число достигнет бесконечности, и ваше приложение упадет.
Окончательное решение выглядит следующим образом:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let scrollBarPosition: CGFloat = (scrollView.contentOffset.y / scrollView.contentSize.height) * (view.bounds.size.height)
if scrollView.contentSize.height > 0 {
dateScrollbar.snp.remakeConstraints { (make) in
make.centerY.equalTo(scrollBarPosition)
make.trailing.equalToSuperview().inset(110)
}
}
}
Примечание. Я использую библиотеку автоматического размещения, называемую SnapKit, для установки ограничений автоматического размещения.