• 分段控制器--UISegmentedControl 基本用法


    http://blog.csdn.net/heng615975867/article/details/43527295

    http://blog.csdn.net/gf771115/article/details/7683565

    UISegmentedControl分段控件代替了桌面OS上的单选按钮。不过它的选项个数非常有限,因为你的IOS设备屏幕有限。当我们需要使用选项非常少的单选按钮时它很合适。

     一:创建一个SegmentControl

        //先创建一个数组用于设置标题
        NSArray *arr = [[NSArray alloc]initWithObjects:@"轻拍",@"长按",@"清扫",@"旋转",@"捏合",@"拖拽", nil];
        
        //初始化UISegmentedControl
        //在没有设置[segment setApportionsSegmentWidthsByContent:YES]时,每个的宽度按segment的宽度平分
        UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:arr];
        
        //设置frame
        segment.frame = CGRectMake(0, 400, self.view.frame.size.width, 40);
        
        //管理Segment的内容
        //设置下标为3的segment的标题 下标以0开始 iOS里的所有下标都是以0开始
        [segment setTitle:@"大便" forSegmentAtIndex:3];
        
        //设置下标为4的segment的图片
        [segment setImage:[UIImage imageNamed:@"maopiao"] forSegmentAtIndex:4];
        
        //添加到主视图
        [self.view addSubview:segment];

    运行如图:    

        

    二:添加/删除分页Segments  

        [segment insertSegmentWithImage:[UIImage imageNamed:@"3"] atIndex:2 animated:YES]; //添加分页,并设置图片
        [segment insertSegmentWithTitle:@"ddd" atIndex:0 animated:YES];//添加分页,并设置标题
        [segment numberOfSegments];//得到segment的数量
        [segment removeAllSegments];//移出所有segment
        [segment removeSegmentAtIndex:2 animated:YES];//移出下标为2的segment
        segment.selectedSegmentIndex = 0;//选中第几个segment 一般用于初始化时选中

    三:管理Segment的行为和外观   

        //默认为NO 当设置为YES时,当被选中后,一会儿后不显示被选中状态(最左边的样子),不选中状态即下图的右边几个按钮一样
        segment.momentary = YES;

        

      //设置segment的外观和字体颜色
        segment.tintColor = [UIColor redColor];
        //segment.segmentedControlStyle = UISegmentedControlStyleBar;此属性在ios7之后不再有任何效果
        
        [segment setEnabled:NO]; //设置segment是否可用 此方法是其父类UIControl的方法
        [segment setEnabled:NO forSegmentAtIndex:2];//设置下标为2的segment不可用
        [segment setWidth:100 forSegmentAtIndex:2]; //这时下表为2的segment的宽度
        [segment setContentOffset:CGSizeMake(10, 10) forSegmentAtIndex:2];//设置内容偏移
        segment.apportionsSegmentWidthsByContent = YES; //是否根据segment的内容改变segment的宽度

        

        //设置设置竖屏状态下segments的背景图片
        [segment setBackgroundImage:[UIImage imageNamed:@"yellow"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

    typedef enum {
        UIBarMetricsDefault,  //竖屏
        UIBarMetricsLandscapePhone,  横屏
    } UIBarMetrics;

        //设置Segment的字体
        NSDictionary *dic = @{
                              //1.设置字体样式:例如黑体,和字体大小
                              NSFontAttributeName:[UIFont fontWithName:@"Arial-BoldMT" size:20],
                              //2.字体颜色
                              NSForegroundColorAttributeName:[UIColor grayColor]
                              };
        
        [segment setTitleTextAttributes:dic forState:UIControlStateNormal];

        

    //当选中不同的segment时,

    //当选中不同的segment时,会触发不同的点击事件
    [segment addTarget:self action:@selector(selected:) forControlEvents:UIControlEventValueChanged];
        
    
    -(void)selected:(id)sender{
        UISegmentedControl* control = (UISegmentedControl*)sender;
        switch (control.selectedSegmentIndex) {
            case 0:
                NSLog(@"0");
                break;
            case 1:
                NSLog(@"1");
                break;
            case 2:
                NSLog(@"2");
                break;
                
            default:
                NSLog(@"3");
                break;
        }
    }

    可以视使用的场合,有三种风格选择,如下:

    1. typedef enum {  
    2.     UISegmentedControlStylePlain,     // large plain 有灰边的大白按钮,适合偏好设置单元   
    3.     UISegmentedControlStyleBordered,  // large bordered 黑边的大白按钮,适用于表格单元   
    4.     UISegmentedControlStyleBar,       // small button/nav bar style. tintable 小按钮,适合导航栏   
    5.     UISegmentedControlStyleBezeled,   // large bezeled style. tintable   
    6. } UISegmentedControlStyle;  

    如果你使用的是 UISegmentedControlStyleBar 风格,还可以用空间的 tintColor 属性为整个控件设置渲染色彩:

    1. UIColor *myTint = [[ UIColor alloc]initWithRed:0.66 green:1.0 blue:0.77 alpha:1.0];  
    2.    mySegmentedControl.tintColor = myTint;  

    注意:开启这个功能后点触片段不会更新 selectedSegmentedIndex,因此也就无法通过这个属性得到当前选取的片段。

  • 相关阅读:
    Vue:对象更改检测注意事项
    Vue实现简易留言板
    CSS实现三级菜单[转]
    Vue 侦听属性
    Vue-列表渲染 非变异方法
    MYSQL/HIVESQL笔试题(七):HIVESQL(七)
    leetcode算法题基础(四十九) 树BFS
    数据结构基础(八)图Graph
    数据结构基础(七)优先队列 PriorityQueue, 堆Heap
    数据结构基础(六)树
  • 原文地址:https://www.cnblogs.com/jiayongqiang/p/5534831.html
Copyright © 2020-2023  润新知