zoukankan      html  css  js  c++  java
  • collectionview cell吸顶效果

     

    #import "MyFlowLayout.h"

     

    @implementation MyFlowLayout

    #define kWidth self.collectionView.frame.size.width

    - (instancetype)init

    {

        if (self = [super init]) {

            // 设置item估计值

            self.estimatedItemSize = CGSizeMake(300, 100);

            // 全局配置item尺寸,单独定义调用协议方法[sizeForItemAtIndexPath]

            self.itemSize = CGSizeMake(300, 100);

            // 全局配置每行之间的间距,单独定义可调用协议方法[minimumLineSpacingForSectionAtIndex]

            self.minimumLineSpacing = 10;

            // 全局配置每行内部item的间距,单独定义可调用协议方法[minimumInteritemSpacingForSectionAtIndex]

            self.minimumInteritemSpacing = 0;

           

            // 设置滚动方向

            // UICollectionViewScrollDirectionVertical

            // UICollectionViewScrollDirectionHorizontal

            self.scrollDirection = UICollectionViewScrollDirectionVertical;

            // 设置是否当元素超出屏幕之后固定头部视图位置,默认NO;

            self.sectionHeadersPinToVisibleBounds = YES;

            // 设置是否当元素超出屏幕之后固定尾部视图位置,默认NO;

            self.sectionFootersPinToVisibleBounds = YES;

        }

        return self;

    }

     

    - (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect

    {

        // 拿到可见区域布局属性

        NSArray *arr = [super layoutAttributesForElementsInRect:rect];

        // 处理当前可见区内的布局属性吸顶

        [arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

            [self recomputeCellAttribute:obj];

        }];

        return arr;

    }

     

    - (void)recomputeCellAttribute:(UICollectionViewLayoutAttributes *)attrib

    {

        // 获得悬停的Y值

        CGFloat minY = CGRectGetMinY(self.collectionView.bounds) + self.collectionView.contentInset.top;

    //拿到布局属性应该出现的位置

        CGFloat finalY = MAX(minY, attrib.frame.origin.y);

        CGPoint point = attrib.frame.origin;

        point.y = finalY;

        attrib.frame = (CGRect){point,attrib.frame.size};

    //根据IndexPath设置zIndex能确立顶部悬停的cell被后来的cell覆盖的层级关系

        attrib.zIndex = attrib.indexPath.row;

    }

     

    - (NSArray<NSString *>*)arrStr

    {

        return @[@"f",@1];

    }

     

    - (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds

    {

        return YES;

    }

    @end

  • 相关阅读:
    项目总结-驱虫市场电商数据挖掘
    电商数据处理项目
    Hive sql常用函数公式整理
    拉勾网‘数据分析师’职位招聘信息数据爬取
    鸢尾花数据(PCA主成分分析)
    项目总结-信用评分卡
    某保险公司参保客户分析
    Excel自定义格式参数
    VS2013创建ADO实体模型报:Microsoft.SqlServer.Management.Sdk.Sfc, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
    AngularJS-学习
  • 原文地址:https://www.cnblogs.com/Keys/p/6179456.html
Copyright © 2011-2022 走看看