当用户输入不仅仅是布尔值时,可使用分段控件(UISegmentedControl)。分段控件提供一栏按钮(有时称为按钮栏),但只能激活其中一个按钮。分段控件会导致用户在屏幕上看到的内容发生变化。它们常用于在不同类别的信息之间选择,或在不同的应用屏幕之间切换。下面介绍基本属性和基本方法的使用。
NSArray*segmentedArray = [[NSArrayalloc]initWithObjects:@"1",@"2",@"3",@"4",nil];
//初始化UISegmentedControl
UISegmentedControl*segmentedControl = [[UISegmentedControlalloc]initWithItems:segmentedArray];
segmentedControl.frame=CGRectMake(20.0, 20.0,250.0,50.0);
segmentedControl.selectedSegmentIndex=2;//设置默认选择项索引
segmentedControl.tintColor= [UIColorredColor];
//有基本四种样式
segmentedControl.segmentedControlStyle=UISegmentedControlStylePlain;//设置样式
![](https://img.haomeiwen.com/i4404867/cd84595435906359.png)
//segmentedControl.segmentedControlStyle=UISegmentedControlStyleBordered;//设置样式
![](https://img.haomeiwen.com/i4404867/9b0099c341880fa8.png)
//segmentedControl.segmentedControlStyle=UISegmentedControlStyleBar;//设置样式
![](https://img.haomeiwen.com/i4404867/7e3846562c91461e.png)
//segmentedControl.segmentedControlStyle=UISegmentedControlStyleBezeled;//设置样式
![](https://img.haomeiwen.com/i4404867/9efaf5ae872ea977.png)
// segmentedControl.momentary = YES;//设置在点击后是否恢复原样
[segmentedControl setTitle:@"two" forSegmentAtIndex:1];//设置指定索引的题目
![](https://img.haomeiwen.com/i4404867/f9372344ebfbfeaa.png)
[segmentedControl setImage:[UIImage imageNamed:@"btn_jyy.png"] forSegmentAtIndex:3];//设置指定索引的图片
![](https://img.haomeiwen.com/i4404867/fa31e27611c22c8e.png)
[segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"mei.png"] atIndex:2 animated:NO];//在指定索引插入一个选项并设置图片
![](https://img.haomeiwen.com/i4404867/806530d41aecc200.png)
[segmentedControl insertSegmentWithTitle:@"insert" atIndex:3 animated:NO];//在指定索引插入一个选项并设置题目
![](https://img.haomeiwen.com/i4404867/0709cbd835c14ef6.png)
[segmentedControl removeSegmentAtIndex:0 animated:NO];//移除指定索引的选项
![](https://img.haomeiwen.com/i4404867/74d64ddb5f5ef36a.png)
// [segmentedControl setWidth:70.0 forSegmentAtIndex:2];//设置指定索引选项的宽度
// [segmentedControl setContentOffset:CGSizeMake(10.0,10.0) forSegmentAtIndex:4];//设置选项中图片等的左上角的位置
//获取指定索引选项的图片imageForSegmentAtIndex:
UIImageView*imageForSegmentAtIndex = [[UIImageViewalloc]initWithImage:[segmentedControlimageForSegmentAtIndex:1]];
imageForSegmentAtIndex.frame=CGRectMake(60.0,120.0,30.0,30.0); ;
//获取指定索引选项的标题titleForSegmentAtIndex
UILabel*titleForSegmentAtIndex = [[UILabelalloc]initWithFrame:CGRectMake(100.0,160.0,30.0,30.0)];
titleForSegmentAtIndex.text= [segmentedControltitleForSegmentAtIndex:0];
//获取总选项数segmentedControl.numberOfSegments
UILabel*numberOfSegments = [[UILabelalloc]initWithFrame:CGRectMake(140.0,170.0,30.0,30.0)];
numberOfSegments.text= [NSStringstringWithFormat:@"%d",segmentedControl.numberOfSegments];
//获取指定索引选项的宽度widthForSegmentAtIndex:
UILabel*widthForSegmentAtIndex = [[UILabelalloc]initWithFrame:CGRectMake(180.0,210.0,70.0,30.0)];
widthForSegmentAtIndex.text= [NSStringstringWithFormat:@"%f",[segmentedControlwidthForSegmentAtIndex:2]];
// [segmentedControl setEnabled:NO forSegmentAtIndex:4];//设置指定索引选项不可选
// BOOL enableFlag = [segmentedControl isEnabledForSegmentAtIndex:4];//判断指定索引选项是否可选
[mySegmentedControladdTarget:selfaction:@selector(segmentAction:)forControlEvents:UIControlEventValueChanged];//添加委托方法
//具体委托方法实例
-(void)segmentAction:(UISegmentedControl*)Seg{
NSIntegerIndex = Seg.selectedSegmentIndex;
NSLog(@"Index %i", Index);
switch(Index) {
case0:
[selfselectmyView1];
break;
case1:
[selfselectmyView2];
break;
case2:
[selfselectmyView3];
break;
case3:
[selfselectmyView4];
break;
case4:
[selfselectmyView5];
break;
case5:
[selfselectmyView6];
break;
default:
break;
}
}
基本属性、方法如上,大家在实际开发中可根据实际需求选取适当属性和方法。
使用技巧:
在导航栏中添加UISegmentedControl ,实现的效果:
![](https://img.haomeiwen.com/i4404867/bd0f9a1a3d2bb1ee.png)
实现的代码:
//自定义UISegmentedcontrol
UISegmentedControl *segmentedControl=[[UISegmentedControl alloc] initWithFrame:CGRectMake(80.0f, 8.0f, 200.0f, 30.0f) ];
[segmentedControl insertSegmentWithTitle:@"Food to eat" atIndex:0 animated:YES];
[segmentedControl insertSegmentWithTitle:@"Food to avoid" atIndex:1 animated:YES];
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.momentary = YES;
segmentedControl.multipleTouchEnabled=NO;
[segmentedControl addTarget:self action:@selector(Selectbutton:) forControlEvents:UIControlEventValueChanged];
UIBarButtonItem *segButton = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];//自定义UIBarButtonItem,封装定义好的UIsegmented。
[segmentedControl release];
self.navigationItem.rightBarButtonItem = segButton;//添加到导航栏中
[segButton release];
网友评论