I want to change view2 position automatically when view1 position will change and bind the both view position using Rxswift.
I try to observe view frame/position using this
view.rx.observe(CGRect.self,"frame")
.subscribe(onNext: {
print($0 ?? (0,0))
})
it print frame on init time but when change view position using constraints
self.constraintHorizontalCenterView.constant = 1000
it print nothing means this code not observe view position...
Is there any way to observe continuously view position or bind view position?
Whether the frame reflect the actual location or not, you could observe with frame like this.
This is old post, but I share my code. It works correctly.
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)
In here, I tried to observe the mapView's frame with using Driver.
Hope this help to you.
from apple 'frame'
// 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.
You can observe bound or center to instead.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With