iOS开发自定义页脚和页眉技巧详解
目录
- 前言
- I 自定义页脚和页眉
- 1.1 自定义分组页眉的步骤
- 1.2 实现UITableViewHeaderFooterView
- 1.3 其他案例
- II titleForHeaderInSection
前言 应用场景:
- 商品管理列表的页眉显示商品数量和批量操作
文章图片
- 修改界面对密码规则的说明
文章图片
I 自定义页脚和页眉 如果系统的API
titleForHeaderInSection
满足不了你的需求,可以自定义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#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开发自定义页脚和页眉技巧详解的详细内容,更多关于iOS自定义页脚页眉的资料请关注脚本之家其它相关文章!
推荐阅读
- iOS开发底层探索界面优化示例详解
- 自定义TextView适配不同设备下的字体大小(Android)
- iOS|iOS 滚动放大缩小
- 面试|axios 拦截器
- Qt开发|Qt5.9.6 + VS2017 + opencv5.4.0 安装及环境配置
- iOS开发之修改UISearchBar的背景颜色
- ABAP开发|ABAP 代码中读取会计科目的字段状态(隐藏、可选、必输)
- 我的|我的 iOS 学习小记
- 项目开发中Maven的单向依赖-2022新项目
- 2022年突然涌现上百家低代码开发平台,有给不懂编程的人用的吗()