iOS-KVO动态监听UIScrollView的contentSize(UITableViewUICollectionView)

Posted 小K’s Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS-KVO动态监听UIScrollView的contentSize(UITableViewUICollectionView)相关的知识,希望对你有一定的参考价值。

逻辑有时候需要在加载完 UITableView、UICollectionView的内容后,确定其高度或宽度来改变它的Frame,这时候可以巧妙地使用KVO添加对其 contentSize 的监听进行处理,以 UICollectionView 为例,逻辑需要在 UICollectionView 加载完后,拿到内容大小进行处理其Frame,在添加 UICollectionView 的 view 初始化方法中,添加监听即可;

添加监听-监听方法处理-移除监听;

添加监听-监听方法处理-移除监听;

添加监听-监听方法处理-移除监听;

 

添加监听

[self.collectionView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];

监听方法

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
{
    if(object == self.collectionView){
        if ([keyPath isEqualToString:@"contentSize"]) {
            if(_collectionView.contentSize.height == _contentHeight) return;
            _contentHeight = _collectionView.contentSize.height;
            ///对其拿到的高或者宽进行处理
        }
    }
    
}

移除监听

- (void)dealloc
{
    [self.collectionView removeObserver:self forKeyPath:@"contentSize"];
}

 

以上是关于iOS-KVO动态监听UIScrollView的contentSize(UITableViewUICollectionView)的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 触摸和监听事件

UIScrollView:处理动态内容?

自定义监听状态栏点击

如何动态调整 UIScrollView 的大小?

Swift如何获得UIScrollView动态高度

在自动布局中动态更改 UIScrollView 的大小