当 view1 位置发生变化时,我想自动更改 view2 位置,并使用Rxswift绑定两个视图位置。
我尝试使用此
观察视图帧/位置view.rx.observe(CGRect.self,"frame")
.subscribe(onNext: {
print($0 ?? (0,0))
})
在初始时打印框架但在使用约束更改视图位置时
self.constraintHorizontalCenterView.constant = 1000
它没有打印意味着这段代码没有观察到视图位置...
有没有办法观察连续观察位置或绑定视图位置?
答案 0 :(得分:1)
来自apple' 框架'
// animatable. do not use frame if view is transformed since it will not correctly reflect the actual location of the view. use bounds + center instead.
您可以观察绑定或居中。
答案 1 :(得分:1)
无论镜框是否反映了实际位置,您都可以通过这样的镜框进行观察。
这是旧帖子,但我分享了我的代码。它可以正常工作。
self.mapView
.rx
.observe(CGRect.self, #keyPath(UIView.frame))
.asDriver(onErrorJustReturn: CGRect.zero)
.drive(onNext: { (rect) in
log.debug("Frame changed to \(String(describing: rect))")
}).disposed(by: self.disposeBag)
在这里,我尝试使用 Driver 观察 mapView 的框架。
希望对您有帮助。
答案 2 :(得分:-1)
UIView.frame不符合KVO标准,因此您无法直接观察它。无论如何,这样做是不合适的恕我直言。
某些事件导致您的视图更改大小。请注意这一点。