Create UIActivityIndi​​cator 如何从扩展中的函数计算 属性

How Create UIActivityIndicator computed property from a function in extension

我已经成功地创建了一个 UIActivityIndicatorView 扩展,用于 animating 它的启动和停止。但是我想通过使用 getset 来使用 bool 类型的 computed property 来让它变得更好。我试过但想不出办法。我怎么能重构这个。

extension UIActivityIndicatorView {
    func loadingIndicator(_ isLoading: Bool) {
        if isLoading {
            self.startAnimating()
        } else {
            self.stopAnimating()
        }
    }
}

您可以使用 UIActivityIndicatorViewisAnimating 属性 作为 isLoading 的支持值。您只需要确保在 setter 中正确控制 starting/stopping 动画,这将设置 isAnimating,因此 isLoading 也将正确设置。

extension UIActivityIndicatorView {
    var isLoading:Bool {
        get {
            return isAnimating
        } set {
            if newValue {
                self.startAnimating()
            } else {
                self.stopAnimating()
            }
        }
    }
}

您可以通过这种方式优化您的代码:

extension UIActivityIndicatorView {
    var isLoading:Bool {
        get {
            return isAnimating
        } set {
            newValue ? startAnimating() : stopAnimating()
        }
    }
}