gpt4 book ai didi

ios - 使用 WillSet 属性观察器更改值

转载 作者:可可西里 更新时间:2023-11-01 00:21:12 26 4
gpt4 key购买 nike

我正在尝试创建一个 UIView 子类。在初始化中,我设置了我希望子类拥有的最小和最大 y 轴原点值。该 View 将通过用户手势或动画以编程方式上下移动。我希望我可以为此使用 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 属性观察器,但这会在设置后重置原点,从而导致动画断断续续。关于如何让它与属性(property)观察员或其他方式合作的任何想法?谢谢

最佳答案

不可能更改 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
}
}

关于ios - 使用 WillSet 属性观察器更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42865008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com