前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS 自定义tab滑块: segment功能+label混合显示;( Slider 双区间)【修订】

iOS 自定义tab滑块: segment功能+label混合显示;( Slider 双区间)【修订】

作者头像
公众号iOS逆向
发布2021-07-05 21:11:40
7161
发布2021-07-05 21:11:40
举报
文章被收录于专栏:iOS逆向与安全iOS逆向与安全
  • 1.1 demo
  • 1.2 用法
  • CRMMultipleSwitch.h
  • CRMMultipleSwitch.m
  • 接口设计

前言

从CSDN下载Demo:https://download.csdn.net/download/u011018979/19790950

原文:https://blog.csdn.net/z929118967/article/details/105076636 视频地址:https://live.csdn.net/v/156406 需求:商户交易汇总表使用tab滑块进行切换/筛选不同级别的代理商数据 应用场景:商户交易汇总表使用tab滑块进行切换/筛选不同级别的代理商数据

I、自定义tab滑块的用法

1.1 demo

从CSDN下载Demo:https://download.csdn.net/download/u011018979/19790950

原文:https://blog.csdn.net/z929118967/article/details/105076636 视频地址:https://live.csdn.net/v/156406 需求:商户交易汇总表使用tab滑块进行切换/筛选不同级别的代理商数据 应用场景:商户交易汇总表使用tab滑块进行切换/筛选不同级别的代理商数据

1.2 用法

  • 初始化控件
代码语言:javascript
复制
/**
 
 本级代理商数据
 下级代理商数据
 
 */
- (CRMMultipleSwitch *)MultipleSwitch{
    if (nil == _MultipleSwitch) {
        CRMMultipleSwitch *switch1 = [[CRMMultipleSwitch alloc]init];
        _MultipleSwitch = switch1;
        [self addSubview:_MultipleSwitch];
        
        __weak __typeof__(self) weakSelf = self;

        
        
        [[switch1 rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof CRMMultipleSwitch *  multipleSwitch) {
        
            
                NSLog(@"点击了第%zd个",multipleSwitch.selectedSegmentIndex);

        }];
        
        [switch1 mas_makeConstraints:^(MASConstraintMaker *make) {
           //        switch1.frame = CGRectMake(0, 0, 180, 30);

            make.height.mas_equalTo(kAdjustRatio(33));
            make.top.offset(kAdjustRatio(18));
            make.bottom.offset(kAdjustRatio(-18));
            
            make.left.offset(kAdjustRatio(74));
            make.right.offset(kAdjustRatio(-74));


        }];
        
        
    }
    //>推荐MultipleSwitch初始化的时候进行数据模型的赋值

    return _MultipleSwitch;
}


  • 设置模型数据

推荐MultipleSwitch初始化的时候进行数据模型的赋值

代码语言:javascript
复制
- (void)setModels:(CRMMultipleSwitchCellTableViewCellModel *)models{
    _models = models;
    
    if(models.items.count>0){
        
        self.MultipleSwitch.items= models.items;
  
  [self setupswitchStyle];

        
    }
}


代码语言:javascript
复制
- (CRMMerchantTransactionByPageMiddleViewModel *)viewModel{
    
    if (_viewModel == nil) {
        _viewModel = [CRMMerchantTransactionByPageMiddleViewModel new];
        
        self.viewModel.multipleSwitchCellTableViewCellModel = [CRMMultipleSwitchCellTableViewCellModel new];
//        @[@" 1",@"2 "];
        self.viewModel.multipleSwitchCellTableViewCellModel.items = @[@"本级代理商数据",@"下级代理商数据"];
        
        
    }
    return _viewModel;
    
}

  • 设置更新滑块样式
代码语言:javascript
复制
- (void)layoutSubviews {
    [super layoutSubviews];
    
    
    [self setupswitchStyle];
    

    
    
}

- (void)setupswitchStyle{
    
        [[self MultipleSwitch] layoutIfNeeded];
        
        CRMMultipleSwitch *switch1 = self.MultipleSwitch;
    //            switch1.layer.borderWidth = 1 / [UIScreen mainScreen].scale;
    //            switch1.layer.borderColor = [UIColor whiteColor].CGColor;
        
        switch1.layer.backgroundColor = [[UIColor colorWithRed:255.0f/255.0f green:122.0f/255.0f blue:144.0f/255.0f alpha:1.0f] CGColor];

                
                
                switch1.selectedTitleColor = [UIColor redColor];
                
        //        @property (nonatomic, copy) UIColor *trackerColor; // 滑块的颜色
        //        @property (nonatomic, copy) UIImage *trackerImage; // 滑块的图片

                switch1.titleColor = [UIColor whiteColor];
                
    switch1.titleFont = kPingFangFont(14);

                switch1.trackerColor = [UIColor whiteColor];
    
}

II、代码实现

CRMMultipleSwitch.h

代码语言:javascript
复制
NS_ASSUME_NONNULL_BEGIN
/**
 类似segment功能,label混合显示

 */
@interface CRMMultipleSwitch : UIControl
- (instancetype)initWithItems:(NSArray *)items;

@property(nonatomic) NSInteger selectedSegmentIndex;

@property (nonatomic, strong) UIColor  *titleColor;
@property (nonatomic, strong) UIColor  *selectedTitleColor;

@property (nonatomic, strong) UIFont   *titleFont;

@property (nonatomic, assign) CGFloat  spacing; // label之间的间距
@property (nonatomic, assign) CGFloat  contentInset; // 内容内宿边距

@property (nonatomic, copy) UIColor *trackerColor; // 滑块的颜色
@property (nonatomic, copy) UIImage *trackerImage; // 滑块的图片


@property (nonatomic, strong) NSArray *items;

// *)





@end

CRMMultipleSwitch.m

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-28,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 iOS逆向 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • I、自定义tab滑块的用法
    • 1.1 demo
      • 1.2 用法
      • II、代码实现
        • CRMMultipleSwitch.h
          • CRMMultipleSwitch.m
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com