我想观察仅在较新的iOS版本上可用的属性的didSet。我试过了:

class CustomNavigationBar: UINavigationBar {

    @available(iOS 11.0, *)
    override open var prefersLargeTitles: Bool {
        didSet {
            print(prefersLargeTitles)
        }
    }
}


但是我得到了:


  :0:错误:“ prefersLargeTitles”仅在iOS 11.0或更高版本上可用


Xcode版本9.4(9F1027a)
斯威夫特4.1
iOS部署目标9.0
iPhone SE 11.4模拟器

最佳答案

我不确定为什么didSet@available不兼容,但是我发现了get + set的解决方法,该方法可以正常生成:

@available(iOS 11.0, *)
override open var prefersLargeTitles: Bool {
    get {
        return super.prefersLargeTitles
    }
    set {
        super.prefersLargeTitles = newValue
        // `didSet` logic here:
        print(prefersLargeTitles)
    }
}

10-07 20:48