簡體   English   中英

使用WillSet屬性觀察器更改值

[英]Changing Values with WillSet Property Observer

我試圖創建一個UIView子類。 在初始化中,我設置了子類要具有的最小和最大y軸原點值。 該視圖將通過用戶手勢或動畫以編程方式上下移動。 我希望可以為此使用willSet屬性用戶:

override var frame: CGRect {
    willSet {
        if newValue.origin.y > maximumOriginY {
            self.frame.origin.y = maximumOriginY
        }
        if newValue.origin.y < minimumOriginY {
            self.frame.origin.y = minimumOriginY
        }
    }
}

但是,它似乎沒有任何作用。 我嘗試使用DidSet屬性觀察器,但是在設置原點后會重置原點,從而導致動畫斷斷續續 關於如何使它與財產觀察員合作的任何想法? 謝謝

willSet觀察器中無法更改值。 覆蓋getter和setter可以工作:

override var frame: CGRect {
    get { return super.frame }
    set {
        var tempFrame = newValue
        tempFrame.origin.y = min(max(tempFrame.origin.y, minimumOriginY), maximumOriginY)
        super.frame = tempFrame
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM