iOS開發(fā)自定義頁腳和頁眉技巧詳解
更新時間:2022年07月26日 14:10:03 作者:公眾號iOS逆向
這篇文章主要為大家介紹了iOS開發(fā)自定義頁腳和頁眉的技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
前言
應用場景:
- 商品管理列表的頁眉顯示商品數量和批量操作
- 修改界面對密碼規(guī)則的說明
I 自定義頁腳和頁眉
如果系統(tǒng)的APItitleForHeaderInSection
滿足不了你的需求,可以自定義UITableViewHeaderFooterView。
1.1 自定義分組頁眉的步驟
自定義UITableViewHeaderFooterView的步驟:
- 注冊
[_tableView registerClass:[CRMPasswordRuleDescHeaderFooterView class] forHeaderFooterViewReuseIdentifier:@"CRMPasswordRuleDescHeaderFooterView"];
- 創(chuàng)建
- (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
案例:密碼規(guī)則的說明 .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開發(fā)自定義頁腳和頁眉技巧詳解的詳細內容,更多關于iOS自定義頁腳頁眉的資料請關注腳本之家其它相關文章!
相關文章
IOS中MMDrawerController第三方抽屜效果的基本使用示例
這篇文章主要介紹了IOS中MMDrawerController第三方抽屜效果的基本使用示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-02-02ios利用RunLoop原理實現去監(jiān)控卡頓實例詳解
這篇文章主要為大家介紹了ios利用RunLoop原理實現去監(jiān)控卡頓實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09