您还可以简单地利用 UIScrollView API 来帮助您实现 UIView 查看/滚动的百分比。这里有一个想法。
随着 UIScrollView 对象被拖动并正确连接到 Storyboard 中的相应场景上,或者,在代码中正确实例化,继续符合您当前相应的 ViewController 类,您想要计算屏幕查看到 UIScrollViewDelegate 的百分比 协议。
例如class YourCustomViewController: UIViewController, UIScrollViewDelegate {}
然后,在YourCustomViewController 类的某个地方,您可以实现以下代码。这是实现屏幕垂直滚动百分比的代码:
func computePercentage(in scrollView: UIScrollView) {
let height = scrollView.contentSize.height
let viewed = scrollView.contentOffset.y + scrollView.bounds.size.height
let pagePercentScrolled = viewed / height * 100.0
// print("Percent Scrolled: \(pagePercentScrolled)")
if pagePercentScrolled >= 50.0 && pagePercentScrolled < 100.0 {
//Do something.
//Example, set imageView alpha to half
yourCustomImageView.alpha = 0.5
} else if pagePercentScrolled == 100 {
//Do something.
//Example, fade in/show full imageView
yourCustomImageView.alpha = 1.0
}
}
同样,您可以稍微改变上面的内容来计算屏幕水平滚动的百分比:
func computePercentage(in scrollView: UIScrollView) {
let width = scrollView.contentSize.width
let viewed = scrollView.bounds.size.width - scrollView.contentOffset.x
let pagePercentScrolled = viewed / width * 100.0
//print("Percent Scrolled: \(pagePercentScrolled)")
if pagePercentScrolled >= 50.0 && pagePercentScrolled < 100.0 {
//Do something.
//Example, set imageView alpha to half
yourCustomImageView.alpha = 0.5
} else if pagePercentScrolled == 100 {
//Do something.
//Example, fade in/show full imageView
yourCustomImageView.alpha = 1.0
}
}
当然,您可以简单地将上述两种方法合二为一。但为了简单和可读性,我将它们分开。
然后在YourCustomViewController 上实现 UIScrollViewDelegate 方法,如下所示:
// MARK: Scroll View Delegate
func scrollViewDidScroll(_ scrollView: UIScrollView) {
computePercentage(in: scrollView)
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
computePercentage(in: scrollView)
}
func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
computePercentage(in: scrollView)
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
computePercentage(in: scrollView)
}