Что такое "(UIView) -> CGFloat"? Я пытаюсь получить значение CGFloat - PullRequest
0 голосов
/ 06 марта 2020
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?

Спасибо!

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Вы не вызывали функцию. Функции вызываются с помощью (), и поскольку у вас есть параметры, необходимо передавать аргументы, например (view: someViewPassedIn), где someViewPassedIn должно иметь тип UIView.

В Swift разница между функциями и замыкания очень маленькие. Переменные могут быть установлены как замыкания, которыми является (UIView) -> CGFloat. Это замыкание, которое не вызывалось как функция.

Может быть довольно сложно обернуть голову, но в основном замыкания содержат блок кода между фигурными скобками / скобками, {}, и () запускает этот блок кода.

Вместо:

let theYvalue = theScrollView.scrollPositionY

Попробуйте:

let theYvalue = theScrollView.scrollPositionY(view: someViewPassedIn)
1 голос
/ 06 марта 2020
let theYvalue = theScrollView.scrollPositionY

Просто присваивает функции значение Y

Я думаю, что вы хотите

let theYvalue = theScrollView.scrollPositionY()

, который оценивает функцию и должен быть CGFloat, который функция возвращает.

...