美文网首页
UICollectionView 设置ContentInset

UICollectionView 设置ContentInset

作者: 蝼蚁撼树 | 来源:发表于2018-04-24 10:40 被阅读0次
    设置了ContentInset

    我在项目中使用了HJCarouselViewLayout布局.同时为了保证点击cell都可以达到 居中 效果.设置了collectionViewContentInset

    _viewHeight = CGRectGetWidth(self.collectionView.frame);
            _itemHeight = self.itemSize.width;
            self.collectionView.contentInset = UIEdgeInsetsMake(0, (_viewHeight - _itemHeight) / 2, 0, (_viewHeight - _itemHeight) / 2);
    

    使用系统提供的 scrollToItemAtIndexPath:indexPath atScrollPosition:

    -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
    {
        [self.colletionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
        
    }
    
    bug截图
    !!!!bug出现

    点击第5个cell的时候,UICollectionView就会直接滑动到最左侧,导致中间的cell无法点击居中.
    1.怀疑是scrollToItemAtIndexPath:indexPath atScrollPosition:是bug的根源,是苹果底层的问题.
    2.更换功能实现的方法使用setContentOffset: animated:

    -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
    {
        
            CGFloat collectionViewWidth = CGRectGetWidth(collectionView.frame);
            UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
            CGPoint offset = CGPointMake(cell.center.x - collectionViewWidth / 2, 0);
            [collectionView setContentOffset:offset animated:YES];
       
    
        
    }
    

    运行 -------
    binggo!!!!
    bug解决!!!!


    修复后.gif

    相关文章

      网友评论

          本文标题:UICollectionView 设置ContentInset

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