UISlider,UIProgressView,UISwitch简单使用

UISlider 滑杆, UIProgress进度条, UISwitch开关这三类控件在之前项目中不是很经常用到, 最近新项目里产品大大要求能在界面上做到炫酷高大上能用上这类控件,现整理下这三种控件,便于后期使用.
纯属本人自己使用,过于简单不喜勿喷嘿嘿...

1. UISlider滑杆

UISlider滑杆,手指可直接滑动改变进度.

slider.gif
- (void)setupSliderView {
    
    // 显示slider值的label
    UILabel *sliderValueLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 70, 200, 30)];
    sliderValueLabel.text = @"32%";
    sliderValueLabel.textAlignment = NSTextAlignmentCenter;
    [self.view addSubview:sliderValueLabel];
    self.sliderValueLabel = sliderValueLabel;
    
    UIView *sliderView = [[UIView alloc] initWithFrame:CGRectMake(60, 100, 250, 30)];
    sliderView.backgroundColor = [UIColor whiteColor];
    [self.view addSubview:sliderView];
    
    //初始化slider
    UISlider *slider = [[UISlider alloc]initWithFrame:CGRectMake(0, 0, sliderView.width, sliderView.height)];
    // 设置最大值
    slider.maximumValue = 100;
    // 设置最小值
    slider.minimumValue = 0;
    // 设置默认值 这个值是介于滑块的最大值和最小值之间的,如果没有设置边界值,默认为0-1
    slider.value = 32;
    // 设置滑块值是否连续变化(默认为YES)
    slider.continuous= YES;
    
    //设置滑块右边(大于部分)线条的颜色
    slider.maximumTrackTintColor = [UIColor grayColor];
    //设置滑块颜色(影响已划过一端的颜色)
    //    slider.thumbTintColor = [UIColor greenColor];
    // minimumValueImage Minimage和Maximage 给滑块的两端配置图像
    //    slider.minimumValueImage = [UIImage imageNamed:@"u58"];
    // maximumValueImage
    //    slider.maximumValueImage = [UIImage imageNamed:@"u58"];
    // 滑动珠设置换图
    //    [slider setThumbImage:[UIImage imageNamed:@"u58"] forState:UIControlStateNormal];
    //    [slider setThumbImage:[UIImage imageNamed:@"u58"] forState:UIControlStateHighlighted];
    // 设置值(带有动画)
    //    [slider setValue:0.5 animated:YES];
    
    //添加事件
    [slider addTarget:self action:@selector(valueChange:) forControlEvents:(UIControlEventValueChanged)];
    
    //把slider添加到视图上进行显示
    [sliderView addSubview:slider];
    
//    [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(test:) userInfo:slider repeats:YES];
}
- (void)valueChange:(UISlider *)slider {
    
    NSLog(@"slider value : %.0f",[slider value]);
    // 更新sliderValueLabel的值
    self.sliderValueLabel.text = [[NSString alloc]initWithFormat:@"%.0f%%", slider.value];
}

// NSTimer(定时器)
- (void)test:(NSTimer *)timer {
    
    UISlider *slider = timer.userInfo;
    
    [slider setValue:0.5f animated:YES];
    
}

2. UIProgressView进度条

UIProgressView进度条,直接展示,手指不可滑动改变进度.

progressView
    // 实例化一个进度条,有两种样式,一种是UIProgressViewStyleBar一种是UIProgressViewStyleDefault,几乎无区别
    UIProgressView *progressView = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleDefault];
    // 设置的高度对进度条的高度没影响,整个高度=进度条的高度,进度条也是个圆角矩形
    // 但slider滑动控件:设置的高度对slider也没影响,但整个高度=设置的高度,可以设置背景来检验
    progressView.frame = CGRectMake(30, 100, 250, 50);
    // 设置进度条颜色
    progressView.trackTintColor = [UIColor grayColor];
    // 设置进度默认值,这个相当于百分比,范围在0~1之间,不可以设置最大最小值
    progressView.progress = 0.32;
    // 设置进度条上进度的颜色
    progressView.progressTintColor = [UIColor redColor];
    // 设置进度条的背景图片
    progressView.trackImage = [UIImage imageNamed:@"bg"];
    // 设置进度条上进度的背景图片
    progressView.progressImage = [UIImage imageNamed:@"u58"];
    // 设置进度值并动画显示
    [progressView setProgress:0.9 animated:YES];
    [self.view addSubview:progressView];

3. UISwitch开关

开关控件


UISwitch.gif
- (void)setupSwicthView {
    
    //  初始化
    UISwitch *swicthView = [[UISwitch alloc] initWithFrame:CGRectMake(50, 150, 100, 30)];
    swicthView.on = YES;
    //  设置开关开启状态时的颜色
    swicthView.onTintColor = [UIColor yellowColor];
    //  设置开关风格颜色
    swicthView.tintColor = [UIColor blueColor];
    //  设置开关按钮颜色
    swicthView.thumbTintColor = [UIColor greenColor];
    //  设置开关开启状态时的图片
    swicthView.onImage = [UIImage imageNamed:@"pic1"];
    //  设置开关关闭状态时的图片
    swicthView.offImage = [UIImage imageNamed:@"pic2"];
    // 加入视图
    [self.view addSubview:swicthView];
    
    [swicthView addTarget:self action:@selector(swicthAction:) forControlEvents:UIControlEventValueChanged];
}
- (void)swicthAction:(UISwitch *)mySwicth{
    
    UILabel *lastLabel = (UILabel*)[self.view viewWithTag:100];
    [lastLabel removeFromSuperview];
    UISwitch *switchButton = mySwicth;
    BOOL isButtonOn = [switchButton isOn];
    UILabel *switchLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 150, 100, 30)];
    switchLabel.font = [UIFont systemFontOfSize:20];
    switchLabel.tag = 100;
    [self.view addSubview:switchLabel];
    if (isButtonOn) {
         switchLabel.text = @"是";
    }else{
         switchLabel.text = @"否";
    }
    
}

PS新增:

在UITableViewCell上添加switch操作.png
  1. 在UITableViewCell上添加了switch, 可选择方法传值操作
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
            
  if (!cell) {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellId];
                cell.backgroundColor = [UIColor whiteColor];
                cell.textLabel.font = setupTextLabelFont;
                cell.textLabel.textColor = setupTextLabelColor;
                cell.detailTextLabel.font = setupTextLabelFont;
                cell.detailTextLabel.textColor = setupDetailTextLabelColor;
                cell.selectionStyle = UITableViewCellSelectionStyleNone; // 取消cell选中效果
    }
    cell.textLabel.text = @"开启声音";
    cell.accessoryView = [[UISwitch alloc] init];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}

  1. 接着在选择操作里添加方法target,选择当前cell的accessoryView
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        
        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
        UISwitch *voiceSwitch = (UISwitch *)cell.accessoryView;
        [voiceSwitch addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged];
}
  1. 最后在点击方法事件里去做所需的操作事件即可。
#pragma mark - switch声音处理
- (void)switchAction:(UISwitch *)mySwicth {
    
    // 播放按钮
    BOOL isButtonOn = [mySwicth isOn];

    if (isButtonOn) {
        [self.player play];
    } else {
        [self.player pause];
    }
}

-(AVAudioPlayer *)player{
    if (_player == nil) {
        NSURL *url = [[NSBundle mainBundle] URLForResource:@"bg_music.mp3" withExtension:nil];
        _player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
        _player.numberOfLoops = -1;
        _player.volume = 0.1;
    }
    return _player;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容