Bind two UIview fram/Position using Rxswift

Viewed 1515

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?

3 Answers

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.

Related