前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS小技能: tableView section间距失效的解决方案

iOS小技能: tableView section间距失效的解决方案

作者头像
公众号iOS逆向
发布2022-08-22 11:24:57
1.4K0
发布2022-08-22 11:24:57
举报
文章被收录于专栏:iOS逆向与安全

前言

tableView 一些常用的细节技巧:

  • iOS tableView设置style:UITableViewStyleGrouped 时,非第一个section的间距失效】的解决方案
  • 修改 tableViewSectionHeader 字体及背景色
  • 为UITableViewCell设置预估高度
  • iOS 自定义UITableViewHeaderFooterView (替代titleForHeaderInSection)

https://blog.csdn.net/z929118967/article/details/105218766

I section相关

1.1 section的间距失效的解决方案

iOS tableView设置style:UITableViewStyleGrouped 时,非第一个section的间距失效的解决方案: 必须全部实现FooterInSectionFooterInSection对应的四个代理方法才有效(四个必须同时实现)

具体的代码如下

代码语言:javascript
复制

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    
    return CGFLOAT_MIN;

}


- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    
    
    switch (section) {
        case ERPRelease_commoditiesViewSection4platProductCategories:
        case ERPRelease_commoditiesViewSection4productCategoriesbasicInfo4Singlespecification:
            
            case ERPRelease_commoditiesViewSection4brandInfo:

            
            {
                return kAdjustRatio(10);

            }
            break;
            
            
            
        default:
            break;
    }
    
    
    return CGFLOAT_MIN;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
    return nil;


}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    
    UIView *tmp = [UIView new];

    tmp.backgroundColor = self.tableView.backgroundColor;

    switch (section) {
        case ERPRelease_commoditiesViewSection4platProductCategories:
        case ERPRelease_commoditiesViewSection4productCategoriesbasicInfo4Singlespecification:
            case ERPRelease_commoditiesViewSection4brandInfo:


            {
                return tmp;


            }
            break;



        default:
            break;
    }

    return nil;
}

  • 效果图:

在这里插入图片描述

  • 表格的初始化代码
代码语言:javascript
复制

- (UITableView *)tableView{
    if (nil == _tableView) {
//        UITableView *tmpView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 0, 0) style:UITableViewStylePlain];//初始化方法
        UITableView *tmpView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 0, 0) style:UITableViewStyleGrouped];//初始化方法
        _tableView = tmpView;
        _tableView.bounces = NO;
        tmpView.delegate = self;
        tmpView.rowHeight = UITableViewAutomaticDimension;
        tmpView.separatorStyle = UITableViewCellSeparatorStyleNone;
        tmpView.dataSource = self;
        [self addSubview:_tableView];
        _tableView.contentInset = UIEdgeInsetsMake(0, 0, kAdjustRatio(0),0);

        
        __weak __typeof__(self) weakSelf = self;
        
        [_tableView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.equalTo(weakSelf);
            make.left.equalTo(weakSelf).offset(kAdjustRatio(0));
            make.bottom.equalTo(weakSelf);
            
            make.right.equalTo(weakSelf).offset(-kAdjustRatio(0));
            
            
        }];
        
        [_tableView setBackgroundColor:k_view_backColor];
        
        
    }
    return _tableView;
}


1.2 修改 SectionHeader 字体及背景色

代码语言:javascript
复制
-(void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section{

    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;

    header.textLabel.textColor = rgb(51,51,51);
    header.textLabel.font = kPingFangFont(15);

    [header layoutIfNeeded];

    header.clipsToBounds = YES;

        header.contentView.backgroundColor
        = self.tableView.backgroundColor;

}

1.3 自定义FooterView

  • iOS 自定义UITableViewHeaderFooterView (替代titleForHeaderInSection)

II 为UITableViewCell设置预估高度

代码语言:javascript
复制
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(nonnull NSIndexPath *)indexPath{
    return kAdjustRatio(44);
}



III 自定义cell样式

3.1 显示Checkmark样式

代码语言:javascript
复制
- (void)setModels:( ERPProductCategoryTreeDto*)models{
    
    _models =models;
    
    
    
    
    if(models.selectedStyle == ProductCategorytTreeSelectedStyle4Checkmark){

        if (models.isSelected ) {
            
            self.tintColor = HWColor(243, 39, 52);
            self.accessoryType = UITableViewCellAccessoryCheckmark;
        }else{
            self.accessoryType = UITableViewCellAccessoryNone;

        }
     }
}

————————————————
版权声明:本文为CSDN博主「iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/z929118967/article/details/106691892

3.2 案例:商品类目选择视图

[video(video-fWYLiH0s-1624340333311)(type-csdn)(url-https://live.csdn.net/v/embed/167208)(image-https://vedu.csdnimg.cn/82733fac22774a61b81ec2daccfa3844/snapshots/4f7e04a170db4e74b8b961709a176dd0-00002.jpg)(title-iOS 商品/经营类目选择视图)]

下载地址:https://download.csdn.net/download/u011018979/19775162

文章地址:https://kunnan.blog.csdn.net/article/details/106553175视频地址:https://live.csdn.net/v/167208商品经营类目选择视图的应用场景: 1、发布商品时选择商品类目 2、商户进件选择经营类目 3、购物类app下单界面的商品类目筛选

在发布商品的时候,选择类目界面的要求视图分为上下部分。

1、 上部分:展示已经选择的类目信息,并清晰的从上倒下罗列对应层级类目信息(悬浮),点击类目的时候,下部分的展示的类目信息切换为同级类目信息供选择。2、 下部分:展示可供选择的类目信息(支持滚动选中类目)

支持清空数据功能

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iOS逆向 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • I section相关
    • 1.1 section的间距失效的解决方案
      • 1.2 修改 SectionHeader 字体及背景色
        • 1.3 自定义FooterView
        • II 为UITableViewCell设置预估高度
        • III 自定义cell样式
          • 3.1 显示Checkmark样式
            • 3.2 案例:商品类目选择视图
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档