欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

iOS开发自定义页脚和页眉技巧详解,

来源: 开发者 投稿于  被查看 40707 次 评论:223

iOS开发自定义页脚和页眉技巧详解,


目录
  • 前言
  • I 自定义页脚和页眉
    • 1.1 自定义分组页眉的步骤
    • 1.2 实现UITableViewHeaderFooterView
    • 1.3 其他案例
  • II titleForHeaderInSection

    前言

    应用场景:

    • 商品管理列表的页眉显示商品数量和批量操作

    • 修改界面对密码规则的说明

    I 自定义页脚和页眉

    如果系统的APItitleForHeaderInSection 满足不了你的需求,可以自定义UITableViewHeaderFooterView。

    1.1 自定义分组页眉的步骤

    自定义UITableViewHeaderFooterView的步骤:

    • 注册
            [_tableView registerClass:[CRMPasswordRuleDescHeaderFooterView class] forHeaderFooterViewReuseIdentifier:@"CRMPasswordRuleDescHeaderFooterView"];
    
    • 创建
    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
    {
        CRMPasswordRuleDescHeaderFooterView *footerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"CRMPasswordRuleDescHeaderFooterView"];
    //    footerView.type = self.type;
        footerView.models = self.viewModel.passwordRuleDescModel;
        return footerView;
    }
    
    • 实现UITableViewHeaderFooterView

    1.2 实现UITableViewHeaderFooterView

    案例:密码规则的说明 .h

    #import <UIKit/UIKit.h>
    #import "CRMPasswordRuleDescV.h"
    NS_ASSUME_NONNULL_BEGIN
    @interface CRMPasswordRuleDescHeaderFooterView : UITableViewHeaderFooterView
    @property (nonatomic,weak) CRMPasswordRuleDescV *cellView;
    @property (nonatomic, strong) CRMPasswordRuleDescModel* models;
    @end
    

    .m

    - (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier{
        if (self = [super initWithReuseIdentifier:reuseIdentifier]) {
            [self selfInit];
    //        [self createSubView];
    //        [self addConstraints];
    //        [self bindViewModel];
        }
        return self;
    }
    - (void)selfInit{
        self.backgroundColor = [UIColor whiteColor];
    //    UITableViewHeaderFooterView
    //    [self bgBottomView];
        [self cellView];
    //    UITapGestureRecognizer *cutTap = [[UITapGestureRecognizer alloc] init];
    //    [[cutTap rac_gestureSignal] subscribeNext:^(id x) {
    //
    //
    //        NSLog(@" cutTap 点击了 ");
    //        self.models.gotype = QCTreturnOrderModelblockType4jumpDetail;
    //        if ( self.models.block) {
    //            self.models.block(self.models);
    //        }
    //
    //
    //    }];
    //    [self addGestureRecognizer:cutTap];
    //
    //
    }
    /**
     */
    - (void)setModels:( id)models{
        _models =models;
        self.cellView.models = models;
    }
    - (CRMPasswordRuleDescV *)cellView{
        if (nil == _cellView) {
            CRMPasswordRuleDescV *tmpView = [[CRMPasswordRuleDescV alloc]init];
            _cellView = tmpView;
            _cellView.backgroundColor = rgb(255,255,255);
            [self.contentView addSubview:_cellView];
            __weak __typeof__(self) weakSelf = self;
            [_cellView mas_makeConstraints:^(MASConstraintMaker *make) {
    //            make.left.equalTo(weakSelf.contentView).offset(kAdjustRatio(0));
    //            make.right.equalTo(weakSelf.contentView).offset(- kAdjustRatio(0));
                make.left.equalTo(weakSelf.contentView).offset(kAdjustRatio(0));
                make.right.equalTo(weakSelf.contentView).offset(- kAdjustRatio(0));
                make.top.equalTo(weakSelf.contentView).offset(kAdjustRatio(0));
                make.bottom.equalTo(weakSelf.contentView).offset(kAdjustRatio(0));
            }];
        }
        return _cellView;
    }
    

    CRMPasswordRuleDescV.h

    #import "CRMPasswordRuleDescModel.h"
    NS_ASSUME_NONNULL_BEGIN
    @interface CRMPasswordRuleDescV : UIView
    @property (nonatomic, strong) CRMPasswordRuleDescModel* models;
    @property (nonatomic,weak) UILabel *titleLab;
    @end
    

    CRMPasswordRuleDescV.m

    - (instancetype)init {
        self = [super init];
        if (self) {////既然nil解析成NO,所以没有必要在条件语句比较。不要拿某样东西直接与YES比较,因为YES被定义为1
            // ...
            [self titleLab];
        }
        return self;
    }
    - (UILabel *)titleLab{
        if (nil == _titleLab) {
            UILabel *header = [[UILabel alloc]init];
            _titleLab = header;
            [self addSubview:_titleLab];
            header.textColor =  rgb(153,153,153);
            header.font = kPingFangNOkAdjustRatioFont(13);
            //    tmp.backgroundColor = ;
            header.numberOfLines = 0;
    //        header.contentView.backgroundColor = self.tableView.backgroundColor;
            __weak __typeof__(self) weakSelf = self;
            [header mas_makeConstraints:^(MASConstraintMaker *make) {
                make.top.equalTo(weakSelf).offset(kAdjustRatio(13));
                make.left.equalTo(weakSelf).offset(kAdjustRatio(20));
                make.right.equalTo(weakSelf).offset(kAdjustRatio(-20));
                make.bottom.equalTo(weakSelf).offset(kAdjustRatio(-13));
            }];
        }
        return _titleLab;
    }
    - (void)setModels:(CRMPasswordRuleDescModel *)models{
        _models = models;
        self.titleLab.text = models.title;
    }
    

    1.3 其他案例

    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
        switch (section) {
            case CRMRisk_merchant_editVSection4basicInfo:
            {
                return kAdjustRatio(30);
            }
                break;
            case CRMRisk_merchant_editVSection4UploadMaterials:
            {
                return kAdjustRatio(30);
            }
                break;
            default:
            {
                return kAdjustRatio(0);
            }
                break;
        }
    }
    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
        UIView *bacView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kWidth, kAdjustRatio(30))];
        bacView.backgroundColor = rgb(248, 248, 248);
            bacView.height = KWratio(25);
            UILabel *titLab = [ControlManager text:@"基本信息" font:displayFontSize(12.0f) color:HWColor(153, 153, 153) alingment:0 fontWithName:@"PingFang-SC-Medium"];
            [bacView addSubview:titLab];
            [titLab mas_makeConstraints:^(MASConstraintMaker *make) {
                make.left.offset(KWratio(15));
                make.centerY.offset(KWratio(0));
            }];
        switch (section) {
            case CRMRisk_merchant_editVSection4basicInfo:
            {
                titLab.text = @"基本信息";
            }
                break;
            case CRMRisk_merchant_editVSection4UploadMaterials:
            {
                titLab.text = @"风险处理";
            }
                break;
            default:
            {
                titLab.text = @"";
            }
                break;
        }
        return bacView;
    //    UIView *tmp = [UIView new];
    //
    //    tmp.backgroundColor = self.backgroundColor;
    //
    //    return tmp;
    }
    

    II titleForHeaderInSection

    //修改 tableViewSectionHeader 字体及背景色
    -(void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section{
        UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
        header.textLabel.textColor =  rgb(153,153,153);
        header.textLabel.font = kPingFangFont(13);
        header.textLabel.numberOfLines = 0;
        header.contentView.backgroundColor = self.tableView.backgroundColor;
    }
    - (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
        if (CRM_Change_PasswordViewSectionEnum4SurePassword ==  section) {
            return QCTLocal(@"新密码不少于6位,须包含大小写字母,数字和特殊字符");
        }
        return nil;
    }

    以上就是iOS开发自定义页脚和页眉技巧详解的详细内容,更多关于iOS自定义页脚页眉的资料请关注3672js教程其它相关文章!

    您可能感兴趣的文章:
    • iOS自定义雷达扫描扩散动画
    • 如何实现axios的自定义适配器adapter
    • iOS自定义身份证键盘
    • iOS自定义UITabBar中间按钮
    • iOS 使用UITextField自定义搜索框 实现用户输入完之后“实时搜索”功能

    用户评论