什么是“(UIView) -> CGFloat”?我正在尝试获取 CGFloat 值

What is a "(UIView) -> CGFloat"? I am trying to get a CGFloat value

extension UIScrollView {
    func scrollPositionY(view:UIView) -> CGFloat {
        if let origin = view.superview {
            // Get the Y position of your child view
            let childStartPoint = origin.convert(view.frame.origin, to: self)

            let this = childStartPoint.y

            return this
        }
    }
}

然后

let theYvalue = theScrollView.scrollPositionY

theYvalue 的类型是 (UIView) -> CGFloat

我可以将其转换为 CGFloat 吗?

谢谢!

let theYvalue = theScrollView.scrollPositionY

只是把函数赋值给Y值

我觉得你想要的是

let theYvalue = theScrollView.scrollPositionY()

计算函数并且应该是一个 CGFloat,函数 returns.

你没有调用函数。使用()调用函数,因为你有参数,所以需要传入参数,比如(view: someViewPassedIn),其中someViewPassedIn必须是UIView.

类型

在Swift中,函数和闭包的差别很小。变量可以设置为闭包,这就是 (UIView) -> CGFloat 的意思。它是一个没有像函数一样被调用的闭包。

可能很难理解,但基本上闭包包含卷曲 brackets/braces、{}() 之间的代码块运行该块代码。

而不是:

let theYvalue = theScrollView.scrollPositionY

尝试:

let theYvalue = theScrollView.scrollPositionY(view: someViewPassedIn)