And*_*alz 2 frame ios cgrect swift
我正在尝试创建一个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
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,它似乎没有做任何事情.我尝试过使用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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
843 次 |
| 最近记录: |