我有一个scrollView
,响应于用户交互,将向其中添加和删除自定义视图。我想确保容器视图始终足够大以显示所有子视图,并希望检测何时添加或删除了视图。我尝试使用KVO:
[self.scrollView addObserver:self forKeyPath:@"subviews" options:NSKeyValueObservingOptionNew context:nil];
但是在没有错误的情况下,子视图数更改时,永远不会调用observeValueForKeyPath:...
方法。我应该改用什么呢?
P.S。我知道我可以将所需的contentSize
属性的计算直接添加到将子视图添加/删除到scrollView的方法中,但是由于架构原因,此选项对我而言较差,我更喜欢KVO之类的方法。是否有这样的选项?
“ subviews”,请尝试观察“ subviews.count”。或者更好的方法,使用UIView中的以下API:
- (void)didAddSubview:(UIView *)subview
请参阅:“观察与视图相关的更改” here。
您不能KVO子视图,但是可以KVO子层
[self.view.layer addObserver:self forKeyPath:@"sublayers" options:NSKeyValueObservingOptionNew context:nil];