iOS开发自定义页脚和页眉技巧详解
短信预约 -IT技能 免费直播动态提醒
前言
应用场景:
- 商品管理列表的页眉显示商品数量和批量操作
- 修改界面对密码规则的说明
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自定义页脚页眉的资料请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341