iOS之UISegmentedControl的使用、自定义按钮实现导航按钮切换、按钮左右切换、WMPageControllers实现按钮切换、UIPageViewController

****滚动的导航,点击导航上的按钮,底部指示器的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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值