24

是否有一种自动方式来了解 UITableView/UIScrollView 中的 ContentSize 变化?

4

2 回答 2

29

答案其实很简单,使用 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
    }
}

不过,我不确定这些标志。

于 2012-07-03T07:05:28.500 回答
2

对于那些不喜欢 KVO 的人:

- (void)setContentSize:(CGSize)contentSize {
    [super setContentSize:contentSize];
    // Do something.
}

是的,只是super用来访问父方法。这假设你继承 UIScrollview/TableView/CollectionView

于 2017-08-24T10:40:04.883 回答