RxSwift观察帧与边界

时间:2017-12-04 14:54:29

标签: ios swift rx-swift frp

我打算在ViewController的视图中添加一个UIView实例,并观察它的框架/边界的变化。但是framebounds之间的差异使我感到困惑,viewDidLoad中的代码如下所示:

let v = UIView()
view.addSubview(v)
v.snp.makeConstraints { (make) in
    make.edges.equalToSuperview()
}

v.rx.observe(CGRect.self, #keyPath(UIView.frame))
    .subscribe(onNext: { print("frame: \($0!)") })
    .disposed(by: rx.disposeBag)
v.rx.observe(CGRect.self, #keyPath(UIView.bounds))
    .subscribe(onNext: { print("bounds: \($0!)") })
    .disposed(by: rx.disposeBag)

observe方法的默认选项是[.new, .initial],它会像这样注销:

frame: (0.0, 0.0, 0.0, 0.0)
bounds: (0.0, 0.0, 0.0, 0.0)
bounds: (0.0, 0.0, 375.0, 667.0)

那么为什么bounds可以发出初始值和新值但frame只能初始值?

0 个答案:

没有答案