>我创建一个信号来观察文本字段框架的宽度,-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 的代码不是您的代码,那么您可以同时观察bounds
和frame
并合并两个信号。例如:
[[[RACSignal
merge:@[RACObserve(view, frame), RACObserve(view, bounds)]]
logNext]
map:^(NSValue *value) {
return @(CGRectGetWidth([value CGRectValue]));
}]