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

分段控制器--UISegmentedControl 基本用法

2016-05-27 15:39 330 查看
http://blog.csdn.net/heng615975867/article/details/43527295

http://blog.csdn.net/gf771115/article/details/7683565

UISegmentedControl分段控件代替了桌面OS上的单选按钮。不过它的选项个数非常有限,因为你的IOS设备屏幕有限。当我们需要使用选项非常少的单选按钮时它很合适。

一:创建一个SegmentControl

//先创建一个数组用于设置标题
NSArray *arr = [[NSArray alloc]initWithObjects:@"轻拍",@"长按",@"清扫",@"旋转",@"捏合",@"拖拽", nil];

//初始化UISegmentedControl
//在没有设置[segment setApportionsSegmentWidthsByContent:YES]时,每个的宽度按segment的宽度平分
UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:arr];

//设置frame
segment.frame = CGRectMake(0, 400, self.view.frame.size.width, 40);

//管理Segment的内容
//设置下标为3的segment的标题 下标以0开始 iOS里的所有下标都是以0开始
[segment setTitle:@"大便" forSegmentAtIndex:3];

//设置下标为4的segment的图片
[segment setImage:[UIImage imageNamed:@"maopiao"] forSegmentAtIndex:4];

//添加到主视图
[self.view addSubview:segment];


运行如图:    

    


二:添加/删除分页Segments  

[segment insertSegmentWithImage:[UIImage imageNamed:@"3"] atIndex:2 animated:YES]; //添加分页,并设置图片
[segment insertSegmentWithTitle:@"ddd" atIndex:0 animated:YES];//添加分页,并设置标题
[segment numberOfSegments];//得到segment的数量
[segment removeAllSegments];//移出所有segment
[segment removeSegmentAtIndex:2 animated:YES];//移出下标为2的segment
segment.selectedSegmentIndex = 0;//选中第几个segment 一般用于初始化时选中


三:管理Segment的行为和外观

//默认为NO 当设置为YES时,当被选中后,一会儿后不显示被选中状态(最左边的样子),不选中状态即下图的右边几个按钮一样
segment.momentary = YES;


    


  //设置segment的外观和字体颜色
segment.tintColor = [UIColor redColor];
//segment.segmentedControlStyle = UISegmentedControlStyleBar;此属性在ios7之后不再有任何效果

[segment setEnabled:NO]; //设置segment是否可用 此方法是其父类UIControl的方法
[segment setEnabled:NO forSegmentAtIndex:2];//设置下标为2的segment不可用
[segment setWidth:100 forSegmentAtIndex:2]; //这时下表为2的segment的宽度
[segment setContentOffset:CGSizeMake(10, 10) forSegmentAtIndex:2];//设置内容偏移
segment.apportionsSegmentWidthsByContent = YES; //是否根据segment的内容改变segment的宽度


    


//设置设置竖屏状态下segments的背景图片
[segment setBackgroundImage:[UIImage imageNamed:@"yellow"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];


typedef enum {
UIBarMetricsDefault, //竖屏
UIBarMetricsLandscapePhone, 横屏
} UIBarMetrics;


//设置Segment的字体
NSDictionary *dic = @{
//1.设置字体样式:例如黑体,和字体大小
NSFontAttributeName:[UIFont fontWithName:@"Arial-BoldMT" size:20],
//2.字体颜色
NSForegroundColorAttributeName:[UIColor grayColor]
};

[segment setTitleTextAttributes:dic forState:UIControlStateNormal];


    


//当选中不同的segment时,

//当选中不同的segment时,会触发不同的点击事件
[segment addTarget:self action:@selector(selected:) forControlEvents:UIControlEventValueChanged];

-(void)selected:(id)sender{
UISegmentedControl* control = (UISegmentedControl*)sender;
switch (control.selectedSegmentIndex) {
case 0:
NSLog(@"0");
break;
case 1:
NSLog(@"1");
break;
case 2:
NSLog(@"2");
break;

default:
NSLog(@"3");
break;
}
}


可以视使用的场合,有三种风格选择,如下:

typedef enum {

UISegmentedControlStylePlain, // large plain 有灰边的大白按钮,适合偏好设置单元

UISegmentedControlStyleBordered, // large bordered 黑边的大白按钮,适用于表格单元

UISegmentedControlStyleBar, // small button/nav bar style. tintable 小按钮,适合导航栏

UISegmentedControlStyleBezeled, // large bezeled style. tintable

} UISegmentedControlStyle;

如果你使用的是 UISegmentedControlStyleBar 风格,还可以用空间的 tintColor 属性为整个控件设置渲染色彩:

UIColor *myTint = [[ UIColor alloc]initWithRed:0.66 green:1.0 blue:0.77 alpha:1.0];

mySegmentedControl.tintColor = myTint;

注意:开启这个功能后点触片段不会更新 selectedSegmentedIndex,因此也就无法通过这个属性得到当前选取的片段。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: