是否有一种自动的方法来了解UITableView/UIScrollView中的ContentSize更改?
dohp0rv51#
答案其实很简单,使用KVO(Key Value Observing);
- (id)initWithFrame:(CGRect)frame tableView:(UITableView *)tableView { // .... [self.tableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld | NSKeyValueObservingOptionPrior context:NULL]; // .... } - (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if ([keyPath isEqualToString:@"contentSize"]) { // Do something } }
但我还不确定国旗。
qeeaahzv2#
不喜欢KVO的人:
- (void)setContentSize:(CGSize)contentSize { [super setContentSize:contentSize]; // Do something. }
是的,只需要使用super来访问父方法。这里假设您子类化了UIScrollview/TableView/CollectionView
super
kkih6yb83#
这可以通过使用合并以更优雅的方式完成:
scrollview.publisher(for: \.contentSize) .removeDuplicates() .sink { size in /* Do your stuff */ } .store(in: &cancellables)
3条答案
按热度按时间dohp0rv51#
答案其实很简单,使用KVO(Key Value Observing);
但我还不确定国旗。
qeeaahzv2#
不喜欢KVO的人:
是的,只需要使用
super
来访问父方法。这里假设您子类化了UIScrollview/TableView/CollectionViewkkih6yb83#
这可以通过使用合并以更优雅的方式完成: