****滚动的导航,点击导航上的按钮,底部指示器的frame相应更改,
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface LYBTotalnavscrollview : UIView
@property(nonatomic,strong)NSArray *titleArr;
@property(nonatomic,copy)void(^selecttitleBlock)(NSString * str);
@end
NS_ASSUME_NONNULL_END
#import "LYBTotalnavscrollview.h"
#define NAVH 45.5
@interface LYBTotalnavscrollview()
@property(nonatomic,strong)UIScrollView *headerscrollview;
@property(nonatomic,strong) UILabel *botlbl;
@end
@implementation LYBTotalnavscrollview
-(NSArray *)titleArr{
if(nil==_titleArr){
_titleArr=[[NSArray alloc]init];
}
return _titleArr;
}
-(instancetype)initWithFrame:(CGRect)frame{
if(self=[super initWithFrame:frame]){
[self initviews];
}
return self;
}
-(void)initviews{
self.titleArr=@[@"第一",@"第二",@"第三",@"第四",@"第五"];
[self createTopscrollview];
}
-(void)createTopscrollview{
UIScrollView *headerscrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, NAVH*TRANSH)];
[self addSubview:headerscrollview];
headerscrollview.contentSize=CGSizeMake(WIDTH+100, 0);
headerscrollview.showsHorizontalScrollIndicator=NO;
headerscrollview.bounces=NO;
for (int i=0; i<self.titleArr.count; i++) {
UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(WIDTH*i/4, 0,WIDTH/4, 29.5*TRANSH)];
btn.contentVerticalAlignment=UIControlContentVerticalAlignmentBottom;
[btn setTitle:self.titleArr[i] forState:UIControlStateNormal];
btn.titleLabel.font=[UIFont fontWithName:@"PingFang-SC-Medium" size:15];
[btn setTitleColor:[UIColor colorWithHexString:@"#FF000000"] forState:UIControlStateNormal];
btn.tag=110+i;
[headerscrollview addSubview:btn];
[btn addTarget:self action:@selector(btnclcik:) forControlEvents:UIControlEventTouchUpInside];
if(i==0){
UILabel *botlbl=[[UILabel alloc]initWithFrame:CGRectMake(0, 34.5*TRANSH,29*TRANSH, 1.5*TRANSH)];
self.botlbl=botlbl;
botlbl.backgroundColor=[UIColor colorWithHexString:@"#FF282F56"];
[headerscrollview addSubview:botlbl];
[botlbl mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(29*TRANSH);
make.height.mas_equalTo(1.5*TRANSH);
make.top.mas_equalTo(btn.mas_bottom).offset(5*TRANSH);
make.centerX.mas_equalTo(btn.mas_centerX);
}];
}
}
}
-(void)btnclcik:(UIButton *)sender{
NSInteger tag=sender.tag-110;
SLog(@"点击了---%ld",(long)tag);
self.selecttitleBlock(self.titleArr[tag]);//传递到父亲页面
CGFloat space=(WIDTH/4-29*TRANSH)/2;
CGRect frame=self.botlbl.frame;
frame.origin.x =space+WIDTH*tag/4;
self.botlbl.frame=frame;
if(tag==0){
}else if(tag==1){
}else if(tag==2){
}else if(tag==3){
}
}
@end
使用:
LYBTotalnavscrollview *titlev=[[LYBTotalnavscrollview alloc]initWithFrame:CGRectMake(0, 44*TRANSH, WIDTH, 45.5*TRANSH)];
titlev.selecttitleBlock = ^(NSString * _Nonnull str) {
SLog(@"分类标题---%@",str);
};
[self.view addsubview: titlev];
***选择导航按钮,指示器滚动,底部内容scrollview滚动;滚动底部scrollview,导航按钮的指示器滚动到相应位置
1.底部scrollview显示的内容页,其他几个内容页面类似
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface LYBDangview : UIView
@property(nonatomic,copy)void(^btnclickBlock)(NSString * str);
@end
NS_ASSUME_NONNULL_END
#import "LYBDangview.h"
@implementation LYBDangview
-(instancetype)initWithFrame:(CGRect)frame{
if(self=[super initWithFrame:frame]){
[self initviews];
}
return self;
}
-(void)initviews{
UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(100, 100,WIDTH, 50)];
btn.contentVerticalAlignment=UIControlContentVerticalAlignmentBottom;
[btn setTitle:@"一" forState:UIControlStateNormal];
btn.titleLabel.font=[UIFont fontWithName:@"PingFang-SC-Medium" size:15];
[btn setTitleColor:[UIColor colorWithHexString:@"#FF000000"] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnclick) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:btn];
}
-(void)btnclick{
NSLog(@"一");
self.btnclickBlock(@"一");
}
@end
2.下面内容scrollview
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@class LYBTotalContentScrollview;
@protocol LYBTotalContentScrollviewDelegate <NSObject>
-(void)LYBTotalContentScrollview:(LYBTotalContentScrollview *)LYBTotalContentScrollview titleString:(NSString *)titlestr;
@end
@interface LYBTotalContentScrollview : UIScrollView
@property(nonatomic,weak)id<LYBTotalContentScrollviewDelegate> mydelegate;
@end
NS_ASSUME_NONNULL_END
#import "LYBTotalContentScrollview.h"
#import "LYBZhengwuview.h"
#import "LYBDangview.h"
#import "LYBcorporateview.h"
#import "LYBainxinview.h"
@interface LYBTotalContentScrollview()
@property(nonatomic,copy)NSString *titlestr;
@end
@implementation LYBTotalContentScrollview
-(instancetype)initWithFrame:(CGRect)frame{
if(self=[super initWithFrame:frame]){
[self initviews];
}
return self;
}
-(void)initviews{
__weak typeof(self) weakSelf=self;
self.backgroundColor=[UIColor redColor];
self.contentSize=CGSizeMake(WIDTH*4+1, 0);
self.pagingEnabled=YES;
LYBZhengwuview *zhengwuview=[[LYBZhengwuview alloc]initWithFrame:CGRectMake(0, 0, WIDTH, self.frame.size.height)];
zhengwuview.btnclickBlock = ^(NSString * _Nonnull str) {
SLog(@"---%@",str);
[self.mydelegate LYBTotalContentScrollview:weakSelf titleString:str];
};
[self addSubview:zhengwuview];
LYBDangview *dangview=[[LYBDangview alloc]initWithFrame:CGRectMake(WIDTH, 0, WIDTH, self.frame.size.height)];
dangview.btnclickBlock = ^(NSString * _Nonnull str) {
SLog(@"---%@",str);
[self.mydelegate LYBTotalContentScrollview:weakSelf titleString:str];
};
[self addSubview:dangview];
LYBcorporateview *corporateview=[[LYBcorporateview alloc]initWithFrame:CGRectMake(WIDTH*2, 0, WIDTH, self.frame.size.height)];
corporateview.btnclickBlock = ^(NSString * _Nonnull str) {
SLog(@"---%@",str);
[self.mydelegate LYBTotalContentScrollview:weakSelf titleString:str];
};
[self addSubview:corporateview];
LYBainxinview *ainxinview=[[LYBainxinview alloc]initWithFrame:CGRectMake(WIDTH*3, 0, WIDTH, self.frame.size.height)];
ainxinview.btnclickBlock = ^(NSString * _Nonnull str) {
SLog(@"---%@",str);
[self.mydelegate LYBTotalContentScrollview:weakSelf titleString:str];
};
[self addSubview:ainxinview];
}
@end
3.顶部滚动的导航结合底部内容scrollview
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface LYBTotalnavscrollview : UIView
@property(nonatomic,strong)NSArray *titleArr;
@property(nonatomic,copy)void(^selecttitleBlock)(NSString * str);//点击导航按钮的回调
@property(nonatomic,copy)void(^selectcontentBlock)(NSString * str);//点击contentscrollview上的年内容后的回调
@end
NS_ASSUME_NONNULL_END
/*使用
LYBTotalnavscrollview *titlev=[[LYBTotalnavscrollview alloc]initWithFrame:CGRectMake(0, 44*TRANSH, WIDTH, HEIGHT-45.5*TRANSH-TopSpaceHigh-BottomHeight-10)];
//选择导航按钮后的回调
titlev.selecttitleBlock = ^(NSString * _Nonnull str) {
SLog(@"标题---%@",str);
};
//点击内容scrollview上的内容后的回调
titlev.selectcontentBlock = ^(NSString * _Nonnull str) {
};
[self.view addSubview:titlev];
*/
#import "LYBTotalnavscrollview.h"
#import "LYBTotalContentScrollview.h"
#define NAVH 45.5
@interface LYBTotalnavscrollview()<UIScrollViewDelegate,LYBTotalContentScrollviewDelegate>
@property(nonatomic,strong)UIScrollView *headerscrollview;
@property(nonatomic,strong) UILabel *botlbl;
@property(nonatomic,strong) LYBTotalContentScrollview *contentscrollview;
@end
@implementation LYBTotalnavscrollview
-(NSArray *)titleArr{
if(nil==_titleArr){
_titleArr=[[NSArray alloc]init];
}
return _titleArr;
}
-(instancetype)initWithFrame:(CGRect)frame{
if(self=[super initWithFrame:frame]){
[self initviews];
}
return self;
}
-(void)initviews{
self.titleArr=@[@"一",@"二",@"三",@"四"];
[self createTopscrollview];
}
-(void)createTopscrollview{
UIScrollView *headerscrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, NAVH*TRANSH)];
self.headerscrollview=headerscrollview;
[self addSubview:headerscrollview];
headerscrollview.contentSize=CGSizeMake(WIDTH+100, 0);
headerscrollview.showsHorizontalScrollIndicator=NO;
headerscrollview.bounces=NO;
for (int i=0; i<self.titleArr.count; i++) {
UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(WIDTH*i/4, 0,WIDTH/4, 29.5*TRANSH)];
btn.contentVerticalAlignment=UIControlContentVerticalAlignmentBottom;
[btn setTitle:self.titleArr[i] forState:UIControlStateNormal];
btn.titleLabel.font=[UIFont fontWithName:@"PingFang-SC-Medium" size:15];
[btn setTitleColor:[UIColor colorWithHexString:@"#FF000000"] forState:UIControlStateNormal];
btn.tag=110+i;
[headerscrollview addSubview:btn];
[btn addTarget:self action:@selector(btnclcik:) forControlEvents:UIControlEventTouchUpInside];
if(i==0){
UILabel *botlbl=[[UILabel alloc]initWithFrame:CGRectMake(0, 34.5*TRANSH,29*TRANSH, 1.5*TRANSH)];
self.botlbl=botlbl;
botlbl.backgroundColor=[UIColor colorWithHexString:@"#FF282F56"];
[headerscrollview addSubview:botlbl];
[botlbl mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(29*TRANSH);
make.height.mas_equalTo(1.5*TRANSH);
make.top.mas_equalTo(btn.mas_bottom).offset(5*TRANSH);
make.centerX.mas_equalTo(btn.mas_centerX);
}];
}
}
LYBTotalContentScrollview *contentscrollview=[[LYBTotalContentScrollview alloc]initWithFrame:CGRectMake(0, NAVH*TRANSH,WIDTH,HEIGHT-NAVH*TRANSH-TopSpaceHigh-BottomHeight)];
self.contentscrollview=contentscrollview;
contentscrollview.delegate=self;
contentscrollview.mydelegate=self;
[self addSubview:contentscrollview];
}
-(void)btnclcik:(UIButton *)sender{
NSInteger tag=sender.tag-110;
SLog(@"点击了---%ld",(long)tag);
//改变导航指示器的位置
CGFloat space=(WIDTH/4-29*TRANSH)/2;
CGRect frame=self.botlbl.frame;
frame.origin.x =space+WIDTH*tag/4;
self.botlbl.frame=frame;
//点击导航按钮,滚动内容
[self.contentscrollview setContentOffset:CGPointMake(WIDTH*tag, 0)];
self.selecttitleBlock(self.titleArr[tag]);//传递到父亲页面
}
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
NSInteger index=scrollView.contentOffset.x/WIDTH;
SLog(@"内容滚动-%ld",(long)index);
//滑动导航按钮
// [self.headerscrollview setContentOffset:CGPointMake(WIDTH/4*index, 0)];
//更改导航指示器
CGFloat space=(WIDTH/4-29*TRANSH)/2;
CGRect frame=self.botlbl.frame;
frame.origin.x =space+WIDTH*index/4;
self.botlbl.frame=frame;
}
//代理方法接收上个页面传递的值
-(void)LYBTotalContentScrollview:(LYBTotalContentScrollview *)LYBTotalContentScrollview titleString:(NSString *)titlestr{
SLog(@"bioti---%@",titlestr);
self.selectcontentBlock(titlestr);// 传值到父view或者vc
}
@end
***************导航按钮切换举例一
- (void)initNavigationBar{
[super initNavigationBar];
UIView *navbtnview=[[UIView alloc]initWithFrame:CGRectMake(0, 0,WIDTH*2/3, 40)];
self.navigationItem.titleView=navbtnview;
NSArray *btntitleArr=@[@"商品",@"详情",@"评价"];
self.botviewArr=[[NSMutableArray alloc]init];
self.navbtnArr=[[NSMutableArray alloc]init];
CGFloat w=WIDTH*2/9;
CGFloat botw=(WIDTH*2/9-30)/2;
for (int i=0; i<3; i++) {
UIView *botview=[[UIView alloc]initWithFrame:CGRectMake(w*i+botw, 37, 30, 3)];
botview.tag=777+i;
botview.backgroundColor=[UIColor colorWithHexString:@"#FF4B4B" alpha:1];
[navbtnview addSubview:botview];
[self.botviewArr addObject:botview];
//设置默认颜色
if(i==0){
botview.backgroundColor=[UIColor colorWithHexString:@"#FF4B4B" alpha:1];
}else{
botview.backgroundColor=[UIColor whiteColor];
}
}
for(int i=0;i<3;i++){
UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(w*i, 0, w, 30)];
[btn setTitle:btntitleArr[i] forState:UIControlStateNormal];
btn.titleLabel.font=[UIFont systemFontOfSize:16];
//设置默认颜色
if(i==0){
[btn setTitleColor:[UIColor colorWithHexString:@"#FF4B4B" alpha:1] forState:UIControlStateNormal];
}else{
[btn setTitleColor:[UIColor colorWithHexString:@"#121212" alpha:1] forState:UIControlStateNormal];
}
[btn addTarget:self action:@selector(topnavbtnclick:) forControlEvents:UIControlEventTouchUpInside];
btn.tag=888+i;
[navbtnview addSubview:btn];
[self.navbtnArr addObject:btn];
}
}
-(void)topnavbtnclick:(UIButton *)btn {
btn.enabled=NO;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
btn.enabled=YES;
});
UIView *botview=nil;
NSInteger btag=btn.tag-888;
botview=self.botviewArr[btag];
NSInteger botvtag=botview.tag-777;
[self setbtncolor:btag botview:botvtag];//
if(btag==0){//商品
NSLog(@"商品");
}else if(btag==1){//详情
NSLog(@"详情");
}else if(btag==2){//评论
NSLog(@"评论");
}
}
-(void)setbtncolor:(NSInteger)btag botview:(NSInteger)bottag{
UIButton *sbtn=nil;
UIView *sbotview=nil;
sbtn=self.navbtnArr[btag];//选中的view
sbotview=self.botviewArr[bottag];//选中的view
//比对btn
UIButton *btn=nil;
for (int i=0; i<self.navbtnArr.count; i++) {
btn=self.navbtnArr[i];
// NSLog(@"--sbtn--%ld---%d",(long)btag,i);
if(sbtn==btn){
[btn setTitleColor:[UIColor colorWithHexString:@"#FF4B4B" alpha:1] forState:UIControlStateNormal];
}else{
[btn setTitleColor:[UIColor colorWithHexString:@"#121212" alpha:1] forState:UIControlStateNormal];
}
}
//比对view
UIView * botview=nil;
for (int i=0; i<self.botviewArr.count; i++) {
botview=self.botviewArr[i];
if(sbotview==botview){
botview.backgroundColor=[UIColor colorWithHexString:@"#FF4B4B" alpha:1];
}else{
botview.backgroundColor=[UIColor whiteColor];
}
}
}
***导航按钮切换二:
@property(nonatomic,strong)NSMutableArray *btnArr;
-(NSMutableArray *)btnArr{
if(nil==_btnArr){
_btnArr=[[NSMutableArray alloc]init];
}
return _btnArr;
}
NSArray *btntitleArr=@[@"一",@"二",@"三"];
NSArray *btnImagearr=@[@"one",@"two",@"three"];
NSArray *btnseletImagearr=@[@"ones",@"twos",@"threes"];
CGFloat btnw=(WIDTH-15*2)/3;
for(int i=0;i<btntitleArr.count;i++){
UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(btnw*i, 0,btnw, 90)];
[btn setTitle:btntitleArr[i] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:btnImagearr[i]] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:btnseletImagearr[i]] forState:UIControlStateHighlighted];
[btn setTitleColor:[UIColor colorWithHexString:@"#FF666666"] forState:UIControlStateNormal];
[btn setTitleColor:[UIColor colorWithHexString:@"#FF282F56"] forState:UIControlStateHighlighted];
btn.titleLabel.font=[UIFont systemFontOfSize:14];
btn.titleLabel.adjustsFontSizeToFitWidth=YES;
btn.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft;
btn.imageEdgeInsets = UIEdgeInsetsMake(-10, btnw/2-10,10, -btnw/2+10);
btn.titleEdgeInsets = UIEdgeInsetsMake(20, 15, -20, -15);
btn.tag=130+i;
[btnview addSubview:btn];
[btn addTarget:self action:@selector(btnclick:) forControlEvents:UIControlEventTouchUpInside];
[self.btnArr addObject:btn];
}
-(void)btnclick:(UIButton *)sender{
NSInteger tag=sender.tag-130;
if(tag==0){
self.hisresdourceview.hidden=NO;
self.hisresourceneedresourceview.hidden=YES;
self.hisresourceothertypeview.hidden=YES;
}else if(tag==1){
self.hisresdourceview.hidden=YES;
self.hisresourceneedresourceview.hidden=NO;
self.hisresourceothertypeview.hidden=YES;
}else if(tag==2){
self.hisresdourceview.hidden=YES;
self.hisresourceneedresourceview.hidden=YES;
self.hisresourceothertypeview.hidden=NO;
}
NSArray *btnImagearr=@[@"icon_wonengtigongnormal",@"icon_woyaoziyuan",@"icon_qitaleixing"];
NSArray *btnseletImagearr=@[@"icon_wonengtigong",@"icon_woyaoziyuancolor",@"icon_qitaleixingcolor"];
for (int i=0; i<self.btnArr.count; i++) {
if(tag==i){
[self.btnArr[i] setImage:[UIImage imageNamed:btnseletImagearr[i]] forState:UIControlStateNormal];
[self.btnArr[i] setTitleColor:[UIColor colorWithHexString:@"#FF282F56"] forState:UIControlStateNormal];
}else{
[self.btnArr[i] setImage:[UIImage imageNamed:btnImagearr[i]] forState:UIControlStateNormal];
[self.btnArr[i] setTitleColor:[UIColor colorWithHexString:@"#FF666666"] forState:UIControlStateNormal];
}
}
}
******双层按钮切换举例:
*********按钮左右切换举例
#import "LYInvoicevc.h"
@interface LYInvoicevc ()
@property(nonatomic,strong)UIButton *leftbtn;
@property(nonatomic,strong)UIButton *rightbtn;
@property(nonatomic,strong)UIView *botview;
@property(nonatomic,strong)UIButton *savebtn;
@end
@implementation LYInvoicevc
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title=@"";
self.view.backgroundColor=[UIColor colorWithHexString:@"#F5F8FA" alpha:1];
[self initviews];
}
-(void)leftbtnclick:(UIButton *)btn{
// btn.enabled=NO;
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// btn.enabled=YES;
// });
[self.leftbtn setImage:[UIImage imageNamed:@"fapiaoSelect"] forState:UIControlStateNormal];
self.leftbtn.selected=YES;
self.rightbtn.selected=NO;
[self.rightbtn setImage:[UIImage imageNamed:@"fapiaoselectnorm"] forState:UIControlStateNormal];
[self.botview removeFromSuperview];
[self.savebtn removeFromSuperview];
[self initbotview];
}
-(void)rightbtnclick:(UIButton *)btn{
// btn.enabled=NO;
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// btn.enabled=YES;
// });
self.leftbtn.selected=NO;
self.rightbtn.selected=YES;
[self.rightbtn setImage:[UIImage imageNamed:@"fapiaoSelect"] forState:UIControlStateNormal];
[self.leftbtn setImage:[UIImage imageNamed:@"fapiaoselectnorm"] forState:UIControlStateNormal];
[self.botview removeFromSuperview];
[self.savebtn removeFromSuperview];
[self initbotview];
}
-(void)initviews{
UIView *topview=[[UIView alloc]initWithFrame:CGRectMake(0, 0, WIDTH, 85)];
topview.backgroundColor=[UIColor whiteColor];
[self.view addSubview:topview];
UILabel *toplbl=[[UILabel alloc]initWithFrame:CGRectMake(16, 15, WIDTH, 15)];
toplbl.text=@"发票抬头";
toplbl.font=[UIFont boldSystemFontOfSize:15];
toplbl.textColor=[UIColor colorWithHexString:@"#121212" alpha:1];
[topview addSubview:toplbl];
UIButton *leftbtn=[[UIButton alloc]initWithFrame:CGRectMake(20, 54, 16, 16)];
self.leftbtn=leftbtn;
self.leftbtn.selected=YES;
[leftbtn addTarget:self action:@selector(leftbtnclick:) forControlEvents:UIControlEventTouchUpInside];
[leftbtn setImage:[UIImage imageNamed:@"fapiaoSelect"] forState:UIControlStateNormal];
[topview addSubview:leftbtn];
UILabel *company=[[UILabel alloc]initWithFrame:CGRectMake(47, 54, 35, 14)];
company.text=@"企业";
company.font=[UIFont systemFontOfSize:15];
company.textColor=[UIColor colorWithHexString:@"#121212" alpha:1];
[topview addSubview:company];
UIButton *rightbtn=[[UIButton alloc]initWithFrame:CGRectMake(20, 25, 16, 16)];
self.rightbtn=rightbtn;
self.rightbtn.selected=NO;
[rightbtn addTarget:self action:@selector(rightbtnclick:) forControlEvents:UIControlEventTouchUpInside];
[rightbtn setImage:[UIImage imageNamed:@"fapiaoselectnorm"] forState:UIControlStateNormal];
[topview addSubview:rightbtn];
[rightbtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(company.mas_right).offset(59);
make.width.height.mas_equalTo(16);
make.top.equalTo(leftbtn);
}];
UILabel *person=[[UILabel alloc]initWithFrame:CGRectMake(47, 25, 35, 14)];
person.textColor=[UIColor colorWithHexString:@"#121212" alpha:1];
person.text=@"个人";
person.font=[UIFont systemFontOfSize:15];
[topview addSubview:person];
[person mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(rightbtn.mas_right).offset(11);
make.top.mas_equalTo(company);
make.height.mas_equalTo(14);
make.width.mas_equalTo(company);
}];
[self initbotview];//
}
-(void)initbotview{
UIView *botview=[[UIView alloc]initWithFrame:CGRectMake(0, 95, WIDTH, 92)];
if(self.rightbtn.selected){
botview=[[UIView alloc]initWithFrame:CGRectMake(0, 95, WIDTH, 44)];
}
botview.backgroundColor=[UIColor whiteColor];
self.botview=botview;
[self.view addSubview:botview];
UILabel *taitoumingcheng=[[UILabel alloc]initWithFrame:CGRectMake(17, 15, 50, 14)];
taitoumingcheng.textColor=[UIColor colorWithHexString:@"#121212" alpha:1];
taitoumingcheng.font=[UIFont systemFontOfSize:15];
NSString *minchengstr=@"*名称";
NSMutableAttributedString *minchengmut=[[NSMutableAttributedString alloc]initWithString:minchengstr];
[minchengmut addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithHexString:@"#FF4B4B" alpha:1] range:NSMakeRange(0, 1)];
taitoumingcheng.attributedText=minchengmut;
[botview addSubview:taitoumingcheng];
UITextField *minchengtf=[[UITextField alloc]initWithFrame:CGRectMake(70, 0, WIDTH-85,44)];
minchengtf.placeholder=@"请输入抬头名称";
[minchengtf setValue:[UIFont systemFontOfSize:14]forKeyPath:@"placeholderLabel.font"];//修改占位符文字大小
[botview addSubview:minchengtf];
UIView *line=[[UIView alloc]initWithFrame:CGRectMake(1, 44, WIDTH-1, 1)];
line.backgroundColor=[UIColor colorWithHexString:@"#F5F8FA" alpha:1];
[botview addSubview:line];
if(self.rightbtn.selected){
line.alpha=0;
}
//
if(self.leftbtn.selected){
UILabel *shuihao=[[UILabel alloc]initWithFrame:CGRectMake(17, 59, 50, 14)];
shuihao.textColor=[UIColor colorWithHexString:@"#121212" alpha:1];
shuihao.font=[UIFont systemFontOfSize:15];
NSString *shuihaostr=@"*税号";
NSMutableAttributedString *shuihaomut=[[NSMutableAttributedString alloc]initWithString:shuihaostr];
[shuihaomut addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithHexString:@"#FF4B4B" alpha:1] range:NSMakeRange(0, 1)];
shuihao.attributedText=shuihaomut;
[botview addSubview:shuihao];
UITextField *shuihaotf=[[UITextField alloc]initWithFrame:CGRectMake(70, 45, WIDTH-85, 44)];
shuihaotf.placeholder=@"请输入纳税人识别号";
[shuihaotf setValue:[UIFont systemFontOfSize:14]forKeyPath:@"placeholderLabel.font"];//修改占位符文字大小
[botview addSubview:shuihaotf];
}
UIButton *savebtn=[[UIButton alloc]initWithFrame:CGRectMake(15, 145, WIDTH-30, 44)];
self.savebtn=savebtn;
[savebtn setBackgroundColor:[UIColor colorWithHexString:@"#FF4B4B" alpha:1]];
[savebtn setTitle:@"确定" forState:UIControlStateNormal];
[savebtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
savebtn.titleLabel.font=[UIFont systemFontOfSize:16];
[savebtn addTarget:self action:@selector(savebtnclick:) forControlEvents:UIControlEventTouchUpInside];
savebtn.layer.cornerRadius=3;
[self.view addSubview:savebtn];
[savebtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(botview.mas_bottom).offset(50);
make.left.equalTo(self.view.mas_left).offset(15);
make.right.equalTo(self.view.mas_right).offset(-15);
make.height.mas_equalTo(44);
}];
}
-(void)savebtnclick:(UIButton *)btn{
btn.enabled=NO;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
btn.enabled=YES;
});
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
******WMPageController框架实现按钮的切换https://github.com/wangmchn/WMPageController
举例参考一:https://www.jianshu.com/p/e2503fb3241b
举例参考二:https://blog.csdn.net/yubo_725/article/details/51159633
#define WIDTH [UIScreen mainScreen].bounds.size.width
#define HEIGHT [UIScreen mainScreen].bounds.size.height
#define Device_Is_iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
//判断iPHoneXr
#define IS_IPHONE_Xr ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) : NO)
//判断iPhoneXs
#define IS_IPHONE_Xs ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
//判断iPhoneXs Max
#define IS_IPHONE_Xs_Max ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) : NO)
#define TopSpaceHigh ((Device_Is_iPhoneX||IS_IPHONE_Xs||IS_IPHONE_Xr||IS_IPHONE_Xs_Max)?88:64)
#define BottomHeight ((Device_Is_iPhoneX||IS_IPHONE_Xs||IS_IPHONE_Xr||IS_IPHONE_Xs_Max)?32:0)
#define IOS_11_Later @available(iOS 11.0, *)
//导航按钮的高度
#define NAVBTNHEIGHT 50
/**
二级导航切换,类似于订单详情页中的分类
使用:push出来
UIViewController *onevc = [[UIViewController alloc] init];
onevc.view.backgroundColor=[UIColor redColor];
UIViewController *twovc=[[UIViewController alloc]init];
twovc.view.backgroundColor=[UIColor blueColor];
UIViewController *vc=[[UIViewController alloc]init];
vc.view.backgroundColor=[UIColor yellowColor];
LYBWMPageController *wmpagevc=[[LYBWMPageController alloc]init];
[wmpagevc setWMPageControllerWithControllers:@[onevc,twovc,vc] navTitleArr:@[@"one",@"two",@"three"]];
[self.navigationController pushViewController:wmpagevc animated:YES];
*/
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface LYBWMPageController : UIViewController
@property(nonatomic,strong)NSArray *vcCtrollerArr;//控制器的数组
@property(nonatomic,strong)NSArray *navTitleArr;// 导航标题数组
//WMPageController---加入到当前控制器
-(void)setWMPageControllerWithControllers:(NSArray *)vcControllerArr navTitleArr:(NSArray *)navTitleArr;
@end
NS_ASSUME_NONNULL_END
********
/**
*/
#import "LYBWMPageController.h"
#import "WMPageController.h"
@interface LYBWMPageController ()<WMPageControllerDelegate,WMPageControllerDataSource>
@property (nonatomic,strong)WMPageController *pageController;
@end
@implementation LYBWMPageController
- (void)viewDidLoad {
[super viewDidLoad];
//页面一启动就出来
UIViewController *onevc = [[UIViewController alloc] init];
onevc.view.backgroundColor=[UIColor redColor];
UIViewController *twovc=[[UIViewController alloc]init];
twovc.view.backgroundColor=[UIColor blueColor];
UIViewController *vc=[[UIViewController alloc]init];
vc.view.backgroundColor=[UIColor yellowColor];
LYBWMPageController *wmpagevc=[[LYBWMPageController alloc]init];
[wmpagevc setWMPageControllerWithControllers:@[onevc,twovc,vc] navTitleArr:@[@"one",@"two",@"three"]];
}
//WMPageController---加入到当前控制器
-(void)setWMPageControllerWithControllers:(NSArray *)vcControllerArr navTitleArr:(NSArray *)navTitleArr{
self.vcCtrollerArr=vcControllerArr;
self.navTitleArr=navTitleArr;
[self addChildViewController:self.pageController];
[self.view addSubview:self.pageController.view];
//包含导航按钮
self.pageController.view.frame=CGRectMake(0, TopSpaceHigh, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height-BottomHeight-TopSpaceHigh);
}
//导航按钮的个数
#pragma mark - WMPageControllerDelegate&&DataSources
- (NSInteger)numbersOfChildControllersInPageController:(WMPageController *)pageController{
return self.vcCtrollerArr.count;
}
//导航的几个按钮
- (NSString *)pageController:(WMPageController *)pageController titleAtIndex:(NSInteger)index{
return self.navTitleArr[index]?self.navTitleArr[index]:@"";
}
//根据不同的index显示的控制器。
- (__kindof UIViewController *)pageController:(WMPageController *)pageController viewControllerAtIndex:(NSInteger)index{
UIViewController *vc = [[UIViewController alloc] init];
vc.view.backgroundColor=[UIColor redColor];
return self.vcCtrollerArr[index]?self.vcCtrollerArr[index]:vc;
}
//按钮的view--可设置背景,高度,frame
- (CGRect)pageController:(WMPageController *)pageController preferredFrameForMenuView:(WMMenuView *)menuView{
menuView.backgroundColor = [UIColor colorWithWhite:0.8 alpha:8];
return CGRectMake(0,0, [UIScreen mainScreen].bounds.size.width, NAVBTNHEIGHT);
}
//内容的frame,不包含导航按钮,y是相对于menu的顶部
- (CGRect)pageController:(WMPageController *)pageController preferredFrameForContentView:(WMScrollView *)contentView{
CGRect rect = CGRectMake(0,NAVBTNHEIGHT+10,[UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height-TopSpaceHigh-NAVBTNHEIGHT-(NAVBTNHEIGHT+10)-BottomHeight);
return rect;
}
- (WMPageController *)pageController{
if (_pageController == nil) {
_pageController = [[WMPageController alloc] init];
_pageController.delegate = self;
_pageController.dataSource = self;
_pageController.progressColor = [UIColor redColor];//按钮文字底部的进度条颜色
_pageController.progressHeight = 3.f;
_pageController.titleColorNormal = [UIColor blackColor];
_pageController.titleColorSelected = [UIColor redColor];
_pageController.titleSizeNormal = 16;
_pageController.automaticallyCalculatesItemWidths = true;
_pageController.menuViewStyle = WMMenuViewStyleLine;//效果
}
return _pageController;
}
-(NSArray *)vcCtrollerArr{
if(nil==_vcCtrollerArr){
_vcCtrollerArr=[[NSArray alloc]init];
}
return _vcCtrollerArr;
}
-(NSArray *)navTitleArr{
if(nil==_navTitleArr){
_navTitleArr=[[NSArray alloc]init];
}
return _navTitleArr;
}
@end
*****系统原生的UIPageViewController实现翻页或者轮播******
#import "ViewController.h"
#import "OneViewController.h"
#import "TwoViewController.h"
#import "ThreeViewController.h"
@interface ViewController ()<UIPageViewControllerDelegate,UIPageViewControllerDataSource>
@property(nonatomic,strong)UIPageViewController *pageVC;
@property(nonatomic,strong)NSMutableArray *dataArr;
@end
@implementation ViewController
-(NSMutableArray *)dataArr{
if(!_dataArr){
_dataArr = [NSMutableArray array];
[_dataArr addObject:[OneViewController new]];
[_dataArr addObject:[TwoViewController new]];
[_dataArr addObject:[ThreeViewController new]];
}
return _dataArr;
}
-(UIPageViewController *)pageVC{
if(!_pageVC){
NSDictionary *options =
[NSDictionary dictionaryWithObject:
[NSNumber
numberWithInteger:UIPageViewControllerSpineLocationMin]
forKey: UIPageViewControllerOptionSpineLocationKey];
/*
UIPageViewControllerTransitionStyleScroll:滑动翻页
UIPageViewControllerTransitionStylePageCurl:翻书样式
*/
_pageVC = [[UIPageViewController alloc]initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:options];
_pageVC.delegate = self;
_pageVC.dataSource = self;
_pageVC.doubleSided=NO;//是否显示双面
[self addChildViewController:_pageVC];
[self.view addSubview:_pageVC.view];
[_pageVC didMoveToParentViewController:self];
[_pageVC setViewControllers:@[self.dataArr[0]] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil];
}
return _pageVC;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.pageVC.view.bounds = CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, 500);
}
#pragma mark UIPageViewControllerDelegate
//动画执行完毕后被调用,在controller切换完成后
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray<UIViewController *> *)previousViewControllers transitionCompleted:(BOOL)completed{
NSLog(@"动画结束");
}
#pragma mark UIPageViewControllerDataSource
//向前翻页
- (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController{
NSInteger currentPage = [self.dataArr indexOfObject:viewController];
if(currentPage <= 0){
return self.dataArr.lastObject;
}else{
currentPage --;
return self.dataArr[currentPage];
}
}
//向后翻页,之前pageViewController里的控制器将被释放,所以pageViewController.viewControllers同样只装了1个viewController。
- (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController{
NSInteger currentPage = [self.dataArr indexOfObject:viewController];
if(currentPage >= self.dataArr.count - 1){
return self.dataArr.firstObject;
}else{
currentPage ++;
return self.dataArr[currentPage];
}
}
//屏幕旋转触发的代理方法
- (UIPageViewControllerSpineLocation) pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation{
return UIPageViewControllerSpineLocationMin;
}
//设置分页控制器的分页数
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController {
return 10;
}
//设置初始的分页点
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController{
return 0;
}
@end