原地址:http://blog.sina.com.cn/s/blog_9d4c34cf0101emql.html
UISegmentedControl 整理
一、使用
{
//数组内可以存图片也可以存字符串
NSArray * items = [[NSArray alloc] initWithObjects:@"red",@"green",@"blue",@"yellow", nil];
UISegmentedControl * segment = [[UISegmentedControl alloc] initWithItems:items];
segment.frame = CGRectMake(0, 20, 320, 100);
segment.selectedSegmentIndex = 0;//选中第几个segment
[segment addTarget:self action:@selector(goSeg:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:seg];
[items release];
[segment release];
}
-(void)goSeg:(UISegmentedControl *)sender{
NSLog(@"%d",sender.selectedSegmentIndex);
}
用文字初始化的segmentcontrol
//设置 及 获取 下标为2的segment的是否与用户交互
[segment setEnabled:NO forSegmentAtIndex:2];
[segment isEnabledForSegmentAtIndex:2];
//默认为NO,选中的segment再次点击,不会执行方法
//设为YES,选中的segment,当手指离开会再次恢复普通状态,类似与button,每次都点击同一个segment都会执行方法
segment.momentary = YES;
三、管理segment(设置与获取segment内容,下标以0开始)
//是否根据segment的内容改变segment的宽度
segment.apportionsSegmentWidthsByContent = YES;
//插入带图片或标题的segment
[segment insertSegmentWithImage:[UIImage imageNamed:@"3"] atIndex:2 animated:YES];
[segment insertSegmentWithTitle:@"add" atIndex:0 animated:YES];
//设置 及 获取 下标为2的segment的图片
[segment setImage:[UIImage imageNamed:@"3"] forSegmentAtIndex:2];
[segment imageForSegmentAtIndex:2];
//设置 及 获取 下标为3的segment的标题
[segment setTitle:@"Clicked" forSegmentAtIndex:3];
[segment titleForSegmentAtIndex:3];
//设置 及 获取 下标为2的segment的宽度
[segment setWidth:10 forSegmentAtIndex:2];
[segment widthForSegmentAtIndex:2];
//设置 及 获取 下标为2的segment的图片或标题的位置(偏移量)
[seg setContentOffset:CGSizeMake(20, 20) forSegmentAtIndex:2];
[segment contentOffsetForSegmentAtIndex:2];
//得到segment的数量
[segment numberOfSegments];
四、自定义segmentControl的外观
1、样式
segment.segmentedControlStyle = UISegmentedControlStylePlain;
typedef enum {
UISegmentedControlStylePlain,// large plain 默认
UISegmentedControlStyleBordered,//large bordered
UISegmentedControlStyleBar, //small button/nav bar style.tintable
UISegmentedControlStyleBezeled,//DEPRECATED.Do not use this style.废弃
} UISegmentedControlStyle;
默认UISegmentedControlStylePlain
如果类型为UISegmentedControlStyleBar,可以调用tintColor修改颜色
seg.tintColor = [UIColor purpleColor];
2、自定义 segmentControl背景图片
//拉伸图片,让图片更清晰
UIImage * image_Nomal = [[UIImage imageNamed:@"1.png"]stretchableImageWithLeftCapWidth:10 topCapHeight:10];
//设置普通状态背景颜色
[seg setBackgroundImage: image_Nomal forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
//设置高亮背景颜色
[seg setBackgroundImage: image_Selected forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
//设置分割线颜色
[seg setDividerImage:[UIImage imageNamed:@"3.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
typedef enum {
UIBarMetricsDefault, //竖屏
UIBarMetricsLandscapePhone, //横屏
} UIBarMetrics;
3、自定义 segmentControl 的文字显示
//设置字体字典内的键
NSString *const UITextAttributeFont; value: UIFont
NSString *const UITextAttributeTextColor; value: UIColor
NSString *const UITextAttributeTextShadowColor; value: UIColor
NSString *const UITextAttributeTextShadowOffset; value: NSValue wrapping a UIOffset
//代码
//设置普通状态文字显示样式。字典第一个键值对设置字体,否则可能无法正常显示
NSDictionary * attributes_Nomal = [[NSDictionary alloc] initWithObjectsAndKeys:[UIFont fontWithName:@"DBLCDTempBlack" size:20],UITextAttributeFont,[UIColor greenColor],UITextAttributeTextColor,[NSValue valueWithCGSize:CGSizeMake(2, 2)],UITextAttributeTextShadowOffset,[UIColor blueColor],UITextAttributeTextShadowColor, nil];
//设置高亮状态的文字显示样式,设置字体和大小也无法正常显示
NSDictionary * attributes_Selected = [[NSDictionary alloc] initWithObjectsAndKeys:[UIFont fontWithName:@"CourierNewPSMT" size:10],UITextAttributeFont,[UIColor purpleColor],UITextAttributeTextColor,[NSValue valueWithCGSize:CGSizeMake(-2, -2)],UITextAttributeTextShadowOffset,[UIColor whiteColor],UITextAttributeTextShadowColor, nil];
//设置字体
[seg setTitleTextAttributes:attributes_Nomal forState:UIControlStateNormal];
[seg setTitleTextAttributes:attributes_Selected forState:UIControlStateSelected];