美文网首页项目经验iOS新手学习
UITableView/UICollectionView自动置位

UITableView/UICollectionView自动置位

作者: Brice_Zhao | 来源:发表于2017-03-05 22:36 被阅读514次

    使用 UICollectionView 分组显示图片或文字,每个组都会有一个头视图/尾视图。有这么一个需求:要求UICollectionView 在开始出现的时候,就滑动到某个组的 header 或 footer。

    实际上,在 UICollectionView.h 中搜索,你会发现有一个 - (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated; 可惜这个方法是给 Item准备的,并不适用于 headerView / footerView 经过查找后,也没有发现诸如:- (void)scrollToSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath 的方法

    解决办法

    修改 UICollectionView 的 ContentOffset

    dispatch_async(dispatch_get_main_queue(), ^{
            CGFloat offsetY = [self.collectionView layoutAttributesForSupplementaryElementOfKind:UICollectionElementKindSectionHeader atIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]].frame.origin.y;
            
            CGFloat contentInsetY = self.collectionView.contentInset.top;
            CGFloat sectionInsetY = ((UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout).sectionInset.top;
            
            [self.collectionView setContentOffset:CGPointMake(self.collectionView.contentOffset.x, offsetY - contentInsetY - sectionInsetY) animated:NO];
        });
    

    相关文章

      网友评论

      本文标题:UITableView/UICollectionView自动置位

      本文链接:https://www.haomeiwen.com/subject/zqokgttx.html