在 iOS swift 中滚动时如何确定滚动到达特定位置(我必须确定底部的 space 应该是 56 px)
How to determine that the scroll reached to specific position(I have to determine the space from bottom should be 56 px) while scrolling in iOS swift
我在视图上有一个 ScrollView,其中页面控件从底部开始粘滞。
当页面从页面底部滚动到 48px 并保持不透明度 100%(显示)到页面末尾时,页面控件将动画化并显示出来。
但我无法检测到这种行为。 scrollView content Size 如下所述。
ScrollView内容大小:
宽度:414.0
身高:852.0
我正在使用下面的代码。
//MARK: - ScrollView Delegate
extension RemoveViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let distanceFromBottom = scrollView.contentSize.height - scrollView.contentOffset.y
print(distanceFromBottom)
if distanceFromBottom >= 796 {
print(" you reached at desired bottom")
self.showPageControl(toShow: true)
} else {
self.showPageControl(toShow: false)
}
}
}
func showPageControl(toShow: Bool) {
if toShow {
if self.pageControl.alpha != 1 {
UIView.animate(withDuration: 0.300, animations: {
self.pageControl.alpha = 1
})
}
} else {
if self.pageControl.alpha != 0 {
UIView.animate(withDuration: 0.300, animations: {
self.pageControl.alpha = 0
})
}
}
}
请让我知道我在这里做错了什么。
您需要先计算bottomOffset
,然后计算它与contentOffset
的差值。如果它 <= 56,那么你到达了一个特定的位置。
let bottomOffset = scrollView.contentSize.height - scrollView.frame.size.height
let position = bottomOffset - scrollView.contentOffset.y
if position <= 56 {
print(" you reached at desired bottom")
self.showPageControl(toShow: true)
} else {
self.showPageControl(toShow: false)
}
我在视图上有一个 ScrollView,其中页面控件从底部开始粘滞。 当页面从页面底部滚动到 48px 并保持不透明度 100%(显示)到页面末尾时,页面控件将动画化并显示出来。 但我无法检测到这种行为。 scrollView content Size 如下所述。
ScrollView内容大小:
宽度:414.0 身高:852.0
我正在使用下面的代码。
//MARK: - ScrollView Delegate
extension RemoveViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let distanceFromBottom = scrollView.contentSize.height - scrollView.contentOffset.y
print(distanceFromBottom)
if distanceFromBottom >= 796 {
print(" you reached at desired bottom")
self.showPageControl(toShow: true)
} else {
self.showPageControl(toShow: false)
}
}
}
func showPageControl(toShow: Bool) {
if toShow {
if self.pageControl.alpha != 1 {
UIView.animate(withDuration: 0.300, animations: {
self.pageControl.alpha = 1
})
}
} else {
if self.pageControl.alpha != 0 {
UIView.animate(withDuration: 0.300, animations: {
self.pageControl.alpha = 0
})
}
}
}
请让我知道我在这里做错了什么。
您需要先计算bottomOffset
,然后计算它与contentOffset
的差值。如果它 <= 56,那么你到达了一个特定的位置。
let bottomOffset = scrollView.contentSize.height - scrollView.frame.size.height
let position = bottomOffset - scrollView.contentOffset.y
if position <= 56 {
print(" you reached at desired bottom")
self.showPageControl(toShow: true)
} else {
self.showPageControl(toShow: false)
}