评论

收藏

[iOS开发] iOS-KVO动态监听UIScrollView的contentSize(UITableView、UICollectionView)

移动开发 移动开发 发布于:2021-08-06 17:52 | 阅读数:317 | 评论:0

逻辑有时候需要在加载完 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"];
}

   
   
   
                        

关注下面的标签,发现更多相似文章