1、基本用法:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = [UIColor whiteColor];
UISegmentedControl * segmented = [[UISegmentedControl alloc] initWithItems:@[@"1", @"2", @"3"]];
segmented.frame = CGRectMake(100, 100, 150, 50);
segmented.selectedSegmentIndex = 0; //设置默认选中项
[segmented addTarget:self action:@selector(segmentedAction:) forControlEvents:UIControlEventValueChanged]; //添加事件
[self.view addSubview:segmented];
}
- (void) segmentedAction:(id)sender {
if ([sender isKindOfClass:[UISegmentedControl class]]) {
UISegmentedControl * segment = sender;
if (segment.selectedSegmentIndex == 0) {
self.view.backgroundColor = [UIColor redColor];
}else if (segment.selectedSegmentIndex == 1) {
self.view.backgroundColor = [UIColor brownColor];
}else if (segment.selectedSegmentIndex == 2) {
self.view.backgroundColor = [UIColor blueColor];
}
}
}
2、设置选中部分的颜色
NSUInteger numbers = segmented.numberOfSegments; // 返回总共有几个部分,只读属性
segmented.tintColor = [UIColor purpleColor]; //设置选中部分的颜色
3、注:ios7后segmentedControlStyle属性不再有任何影响
4、不显示选中部分状态
segmented.momentary = YES; //默认为NO
5、使用图片
使用图片前要先说一下,并不是所有的图片都可以,需要透明全品质图片。如果没有,可以有简单的方法自己制作一些透明全品质图片做测试用,下面给出制作方法:
(当然,如果你是PS大神,那就不用看了,那种图片还不是手到擒来)
首先,进入在线PS:http://www.webps.cn/
创建一张新图片:
设置一下图片大小:
在图片上随便加一些文字,然后保存为透明,全品质图像:
这样测试图片就有了。
将UISegmentControl的每一部分用图片表示:
测试代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = [UIColor whiteColor];
UIImage * pic1Image = [UIImage imageNamed:@"my1.png"];
UIImage * pic2Image = [UIImage imageNamed:@"my2.png"];
UIImage * pic3Image = [UIImage imageNamed:@"my3.png"];
NSArray * images = @[pic1Image, pic2Image, pic3Image];
UISegmentedControl * segmented = [[UISegmentedControl alloc] initWithItems:images];
segmented.frame = CGRectMake(100, 100, 150, 50);
segmented.selectedSegmentIndex = 0; //设置默认选中项
[segmented addTarget:self action:@selector(segmentedAction:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:segmented];
// NSUInteger numbers = segmented.numberOfSegments; // 返回总共有几个部分,只读属性
// segmented.tintColor = [UIColor purpleColor]; //设置选中部分的颜色
// segmented.momentary = YES; //默认为NO YES表示按钮按下后很快恢复
}
- (void) segmentedAction:(id)sender {
if ([sender isKindOfClass:[UISegmentedControl class]]) {
UISegmentedControl * segment = sender;
if (segment.selectedSegmentIndex == 0) {
//点击换为另外的图片
UIImage * image = [UIImage imageNamed:@"yuan.png"];
[segment setImage:image forSegmentAtIndex:0];
// self.view.backgroundColor = [UIColor redColor];
}else if (segment.selectedSegmentIndex == 1) {
//点击换为文字
[segment setTitle:@"second" forSegmentAtIndex:1];
// self.view.backgroundColor = [UIColor brownColor];
}else if (segment.selectedSegmentIndex == 2) {
// self.view.backgroundColor = [UIColor blueColor];
}
}
}
初始:
点击二,变为文字second:
点击三,无变化:
点击一,变为另外的图片:
6、某一选项设置为不可选择:
[segmented setEnabled:NO forSegmentAtIndex:1];
设置为NO即为不可选择
7、插入删除:
#import "ViewController.h"
@interface ViewController ()
{
UISegmentedControl * segmented;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = [UIColor whiteColor];
segmented = [[UISegmentedControl alloc] initWithItems:@[@"1", @"2", @"3"]];
segmented.frame = CGRectMake(100, 100, 150, 50);
segmented.selectedSegmentIndex = 0; //设置默认选中项
[self.view addSubview:segmented];
UIButton * btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn1.frame = CGRectMake(100, 200, 50, 30);
[btn1 setTitle:@"插入" forState:UIControlStateNormal];
[btn1 setBackgroundColor:[UIColor brownColor]];
[self.view addSubview:btn1];
[btn1 addTarget:self action:@selector(insertSeg) forControlEvents:UIControlEventTouchUpInside];
UIButton * btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn2.frame = CGRectMake(180, 200, 50, 30);
[btn2 setTitle:@"删除" forState:UIControlStateNormal];
[btn2 setBackgroundColor:[UIColor brownColor]];
[self.view addSubview:btn2];
[btn2 addTarget:self action:@selector(deleteSeg) forControlEvents:UIControlEventTouchUpInside];
// NSUInteger numbers = segmented.numberOfSegments; // 返回总共有几个部分,只读属性
// segmented.tintColor = [UIColor purpleColor]; //设置选中部分的颜色
// segmented.momentary = YES; //默认为NO YES表示按钮按下后很快恢复
// [segmented setEnabled:NO forSegmentAtIndex:1];
}
- (void) insertSeg {
[segmented insertSegmentWithTitle:@"insert" atIndex:segmented.selectedSegmentIndex animated:YES];
}
- (void) deleteSeg {
[segmented removeSegmentAtIndex:segmented.selectedSegmentIndex animated:YES];
}
初始:
点击插入:
点击删除: