您的位置:首页 > 产品设计 > UI/UE

UISegmentedControl的详细使用

2016-01-19 18:39 423 查看
初始化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);

复制代码
分段控件点击事件:

[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;

}

}

复制代码
获取分段控件相应的值:

//获取指定索引选项的图片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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: