UICollectionView 用法小技巧

1.点击 cell, 切换 cell.selected 状态,选中和未被选中两种状态

在自定义 cell 中添加selected 的 set 方法,可以在里面进行selected的切换

- (void)setSelected:(BOOL)selected{
    [super setSelected:selected];
    self.shopImageV.image = [UIImage imageNamed:selected?@"shophit":@"shopdefault"];
    //NSLog(@"%@",selected?@"选中":@"未被选中");
    // Configure the view for the selected state
}

2.UICollectionViewFlowLayout类是一个具体的布局对象,组织成一个项目的每个部分.

UICollectionViewFlowLayout *flowLayout=[[UICollectionViewFlowLayout alloc] init];
    //纵向滑动
    [flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
    //定义每个Section 的 margin(边缘) UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right)
    flowLayout.sectionInset = UIEdgeInsetsMake(4, 16, 4, 16);
    // item 横向间距
    flowLayout.minimumLineSpacing = 16.f;
    // item 纵向间距
    flowLayout.minimumInteritemSpacing = 0;
    //定义每个UICollectionViewCell 的大小
    flowLayout.itemSize = CGSizeMake((kScreenW - 5* 16)/4,(kScreenW - 5* 16)/4+36);

3.UITableView的UITableViewStyleGrouped风格顶部空白问题

在使用UITableView的UITableViewStyleGrouped的属性时,会遇到每组的顶部空白如下图:


UICollectionView 用法小技巧_第1张图片
步骤 1:设置UITableView的两个代理就可以解决:
// 设置headView在代理方法中操作能避免空白
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    return [UIView new];
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    //header的高度不要设置成0,设置成0的话还是会有空白的
    //CGFLOAT_MIN 表示无限接近于0
    return CGFLOAT_MIN;
}
步骤 2:设置UITableView的初始化时 要做 iOS 11的适配
       if (@available(iOS 11.0, *)) {
            _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;//UIScrollView也适用
            _tableView.estimatedRowHeight = 0;
            _tableView.estimatedSectionHeaderHeight = 0;
            _tableView.estimatedSectionFooterHeight = 0; 
        }else {
            self.automaticallyAdjustsScrollViewInsets = NO;
        }

你可能感兴趣的:(UICollectionView 用法小技巧)