首页 > 解决方案 > 快速百分比项目在屏幕上移动

问题描述

问题:

您正在尝试获取一个从 0 到 1 的数字,具体取决于滚动视图中的视图在可见屏幕上移动了多少。

标准

试图:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    guard let firstScrollviewView = items.first else {return}
    let screenWidth = UIScreen.main.bounds.width

    // This should return a value between 0 and 1
    let xOffset = firstScrollviewView.convert(CGPoint(x: firstScrollviewView.frame.minX, y: 0), to: view).x
    var percentViewMovedOnVisibleScreen: CGFloat = xOffset / screenWidth

    let minValue: CGFloat = 0
    let maxValue: CGFloat = 1
    percentViewMovedOnVisibleScreen = max(min(percentViewMovedOnVisibleScreen, maxValue), minValue)

    // RETURN value between 0 and 1 - NOT CORRECT
    print("HERE x: ", percentViewMovedOnVisibleScreen)
}

这真的很接近,但我认为 xOffset 属性不正确。

GitHub: https ://github.com/Alexander-Frost/ViewContentOffset

标签: swiftuiscrollview

解决方案


xOffset 需要更改为:

let xOffset = scrollView.convert(CGPoint(x:firstScrollviewView.frame.minX, y: 0), to: view).x

推荐阅读