【iOS学习】----UISegmentedControl

         

         分段控件是我们常用的控件之一,今天把具体用法总结了下:

          1.初始化UISegmentedControl

    NSArray *segmentedArray = [[NSArray alloc]initWithObjects:@"1",@"2",@"3",nil];
    UISegmentedControl *segmentedTemp = [[UISegmentedControl alloc]initWithItems:segmentedArray];
    self.segmentedControl = segmentedTemp;
    segmentedControl.frame = CGRectMake(10.0, 10.0, 300.0, 29.0);

         2.常用属性及设置方法如下:
    //设置指定索引的题目
    [segmentedControl setTitle:@"1" forSegmentAtIndex:1];
    //设置指定索引的图片
    [segmentedControl setImage:[UIImage imageNamed:@"home.png"] forSegmentAtIndex:2];
    //在指定索引插入一个选项并设置图片
    [segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"more.png"] atIndex:2 animated:NO];
    //在指定索引插入一个选项并设置题目
    [segmentedControl insertSegmentWithTitle:@"new" atIndex:3 animated:NO];
    //移除指定索引的选项
    [segmentedControl removeSegmentAtIndex:0 animated:NO];
    //设置指定索引选项的宽度
    [segmentedControl setWidth:60.0 forSegmentAtIndex:2];
    //设置选项中图片等的左上角的位置
    //[segmentedControl setContentOffset:CGSizeMake(10.0,10.0) forSegmentAtIndex:1];
    
    //设置默认选择项索引
    segmentedControl.selectedSegmentIndex = 2;
    //分段控件的颜色,只有样式为UISegmentedControlStyleBar的时候才有效果
    segmentedControl.tintColor = [UIColor redColor];
    //设置样式
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBordered;
    //设置在点击后是否恢复原样
    segmentedControl.momentary = NO;
    //设置指定索引选项不可选
    [segmentedControl setEnabled:NO forSegmentAtIndex:3];
    //判断指定索引选项是否可选
    BOOL enableFlag = [segmentedControl isEnabledForSegmentAtIndex:3];
    NSLog(@"%d",enableFlag);

        3.分段控件点击事件:

    [segmentedControl addTarget:self
                         action:@selector(segmentAction:)
               forControlEvents:UIControlEventValueChanged];

        响应的事件:

-(void)segmentAction:(UISegmentedControl *)Seg
{
    NSInteger index = Seg.selectedSegmentIndex;
    switch (index) {
        case 0:
            NSLog(@"0 clicked.");
            break;
        case 1:
            NSLog(@"1 clicked.");
            break;
        case 2:
            NSLog(@"2 clicked.");
            break;
        case 3:
            NSLog(@"3 clicked.");
            break;
        case 4:
            NSLog(@"4 clicked.");
            break;
        default:
            break;
    }
}

         4.获取分段控件相应的值:

    //获取指定索引选项的图片imageForSegmentAtIndex:
    UIImageView *imageForSegmentAtIndex = [[UIImageView alloc]initWithImage:[segmentedControl imageForSegmentAtIndex:1]];
    imageForSegmentAtIndex.frame = CGRectMake(60.0, 100.0, 30.0, 30.0);
    
    //获取指定索引选项的标题titleForSegmentAtIndex
    UILabel *titleForSegmentAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(100.0, 100.0, 30.0, 30.0)];
    titleForSegmentAtIndex.text = [segmentedControl titleForSegmentAtIndex:0];
    
    //获取总选项数segmentedControl.numberOfSegments
    UILabel *numberOfSegments = [[UILabel alloc]initWithFrame:CGRectMake(140.0, 100.0, 30.0, 30.0)];
    numberOfSegments.text = [NSString stringWithFormat:@"%d",segmentedControl.numberOfSegments];
    
    //获取指定索引选项的宽度widthForSegmentAtIndex:
    UILabel *widthForSegmentAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(180.0, 100.0, 70.0, 30.0)];
    widthForSegmentAtIndex.text = [NSString stringWithFormat:@"%f",[segmentedControl widthForSegmentAtIndex:2]];

         但是这样的分段控件只有固定的几种样式。在IOS5以后,可以全局的设置一些控件的外观,分段控件就是其中一个(全局设置UISegmentedControl外观):

//cap insets用来指定哪些区域是固定不变的,未制定的区域则会repeat  
  
UIImage *segmentSelected = [[UIImage imageNamed:@"bg_o.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];  
  
UIImage *segmentUnselected = [[UIImage imageNamed:@"bg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];  
  
UIImage *segmentSelectedUnselected = [UIImage imageNamed:@"line.png"] ;  
  
UIImage *segUnselectedSelected = [UIImage imageNamed:@"line.png"] ;  
  
UIImage *segmentUnselectedUnselected = [UIImage imageNamed:@"line.png"];  
  
//Segmente未选中背景  
[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected  
                                           forState:UIControlStateNormal  
                                         barMetrics:UIBarMetricsDefault];  
  
//Segmente选中背景  
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected  
                                           forState:UIControlStateSelected  
                                         barMetrics:UIBarMetricsDefault];  
  
//Segmente左右都未选中时的分割线  
//BarMetrics表示navigation bar的状态,UIBarMetricsDefault 表示portrait状态(44pixel height),UIBarMetricsLandscapePhone 表示landscape状态(32pixel height)  
  
[[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected  
                             forLeftSegmentState:UIControlStateNormal  
                               rightSegmentState:UIControlStateNormal  
                                      barMetrics:UIBarMetricsDefault];  
  
[[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected  
                             forLeftSegmentState:UIControlStateSelected  
                               rightSegmentState:UIControlStateNormal  
                                      barMetrics:UIBarMetricsDefault];  
  
[[UISegmentedControl appearance] setDividerImage:segUnselectedSelected  
                             forLeftSegmentState:UIControlStateNormal  
                               rightSegmentState:UIControlStateSelected  
                                      barMetrics:UIBarMetricsDefault];  

//字体  
NSDictionary *textAttibutesUnSelected = [NSDictionary dictionaryWithObjectsAndKeys:  
                               [UIFont systemFontOfSize:18],UITextAttributeFont,  
                               [UIColor blackColor],UITextAttributeTextColor,  
                               [UIColor whiteColor],UITextAttributeTextShadowColor,  
                               [NSValue valueWithCGSize:CGSizeMake(1, 1)],UITextAttributeTextShadowOffset,nil];  
  
NSDictionary *textAttibutesSelected = [NSDictionary dictionaryWithObjectsAndKeys:  
                                         [UIFont systemFontOfSize:18],UITextAttributeFont,  
                                         [UIColor whiteColor],UITextAttributeTextColor,  
                                         [UIColor whiteColor],UITextAttributeTextShadowColor,  
                                         [NSValue valueWithCGSize:CGSizeMake(0, 0)],UITextAttributeTextShadowOffset,nil];  
  
[[UISegmentedControl appearance] setTitleTextAttributes:textAttibutesUnSelected  
                                               forState:UIControlStateNormal];  
  
[[UISegmentedControl appearance] setTitleTextAttributes:textAttibutesSelected  
                                               forState:UIControlStateSelected]; 










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值