RACObserve 边界或框架的 UIView



>我创建一个信号来观察文本字段框架的宽度,-viewDidLoad

RACSignal *destinationDisplayWidthSignal =
    [RACObserve(self.destinationNumberTextField, frame)
        map:^id(NSValue *value) {
            NSLog(@"rect: %@", NSStringFromCGRect([value CGRectValue]));
            return @(CGRectGetWidth([value CGRectValue]));
        }];

但是,在帧更改后,信号没有发送下一个事件-viewDidAppear:。我尝试用bounds替换frame,它有效!

我应该始终使用 RACObserve() 观察 UIView 的bounds吗?

没有人回答,有些代码会调用-setFrame:,而其他代码会调用-setBounds:。如果设置 rect 的代码不是您的代码,那么您可以同时观察boundsframe并合并两个信号。例如:

[[[RACSignal
    merge:@[RACObserve(view, frame), RACObserve(view, bounds)]]
    logNext]
    map:^(NSValue *value) {
        return @(CGRectGetWidth([value CGRectValue]));
    }]

最新更新