iOS开发之分段控制器(UISegmentedControl)

作者: 呼噜ZR | 来源:发表于2016-03-08 11:57 被阅读13790次

    今天我们来说下iOS中的分段选择控制器UISegmentedControl,这一控件有什么作用呢

    • 每个segment都能被点击,相当于集成了多个button
    • 通常我们会点击不同的segment来切换不同的view

    那么它实现了一个什么效果呢,我们先看下图:

    这就是我们实现的效果,这里家具、灯饰等等每一项就是一个按钮,点击会触发不同事件或跳转到不同页面

    那么怎么实现这一效果能,只需要简单几句代码:

    //先生成存放标题的数据
         NSArray *array = [NSArray arrayWithObjects:@"家具",@"灯饰",@"建材",@"装饰", nil];
        //初始化UISegmentedControl
        UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:array];
        //设置frame
        segment.frame = CGRectMake(10, 100, self.view.frame.size.width-20, 30);
        //添加到视图
        [self.view addSubview:segment];
    

    这样一个简单的分段控制器就生成了,这样还不能使用,我们实际开发中需要根据它的属性去进一步设置.

    UISegmentedControl属性设置

    在segment生成后我们可以根据需求在任意位置插入或删除内容

    //添加一个分段(在指定下标下插入,并设置动画效果)
    [segment insertSegmentWithTitle:@"五金电料" atIndex:2 animated:NO];
    //插入图片分段
    //[segment insertSegmentWithImage:[UIImage imageNamed:@"需要插入图片的名字"] atIndex:2 animated:YES];
    //移除一个分段(根据下标)
     //[segme removeSegmentAtIndex:0 animated:YES];
    
    插入标题效果

    我们还可以设置其他属性

    //根据下标修改分段标题(修改下标为2的分段)
       [segme setTitle:@"巧克力" forSegmentAtIndex:2];
    //根据内容定分段宽度
       segme.apportionsSegmentWidthsByContent = YES;
     //开始时默认选中下标(第一个下标默认是0)
       segme.selectedSegmentIndex = 2;
    //控件渲染色(也就是外观字体颜色)
        segment.tintColor = [UIColor redColor];
    //按下是否会自动释放:
        //segment.momentary = YES;
    
    实现的效果

    除了以上属性,我们也可以设置每一个分段的属性

     // 设置指定索引选项的宽度(设置下标为2的分段宽度)
        [segment setWidth:70.0 forSegmentAtIndex:2];
        // 设置分段中标题的位置(0,0点为中心)
        [segment setContentOffset:CGSizeMake(10,10) forSegmentAtIndex:3];
    
    修改后的效果

    当然最重要的是我们要给segment添加事件

     //添加事件
        [segme addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged];
    

    实现添加的事件

    //点击不同分段就会有不同的事件进行相应
    -(void)change:(UISegmentedControl *)sender{
        NSLog(@"测试");
        if (sender.selectedSegmentIndex == 0) {
            NSLog(@"1");
        }else if (sender.selectedSegmentIndex == 1){
            NSLog(@"2");
        }else if (sender.selectedSegmentIndex == 2){
            NSLog(@"3");
        }else if (sender.selectedSegmentIndex == 3){
            NSLog(@"4");
        }
        
    

    如果开发中有需求,我们可以让其在导航栏显示,只需要我们稍微改变下添加到视图的方法

    //显示在导航栏上
    self.navigationItem.titleView = segmentedControl;
    
    在导航栏实现的效果

    这只是我个人总结的UISegmentedControl的一些简单使用方法,如果有什么问题,还希望大家积极指出,共同进步,谢谢.

    相关文章

      网友评论

      • 多LV信源:写得挺好的, 赞一个
      • xiaomayi2012:请问如何去掉segment四周的圆角,我想让四周为直角
        coding_Liu:@xiaomayi2012 可以设置边框宽为5,然后将边框的颜色调成背景的颜色,这样出现的假象就是去掉圆角了
      • Gigibond:跳转视图怎么改变索引 selectedSegmentIndex
      • d37e0f53cc26: 我想实现跳转View.实现不成功
      • a05832db24ea:大神,响应事件,比如用户按键怎么做的,也是直接添加target-action吗?我在Mac下
        呼噜ZR:@屎壳郎123 是得,添加后,我们可以检测到用户点击的是哪个按钮,这样就可以实现不同响应事件
      • 奔跑的小菜菜:给个like咯
        呼噜ZR:@奔跑的小菜菜 谢谢喽

      本文标题:iOS开发之分段控制器(UISegmentedControl)

      本文链接:https://www.haomeiwen.com/subject/rllzkttx.html