分段控制器--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设备屏幕有限。当我们需要使用选项非常少的单选按钮时它很合适。
运行如图:
typedef enum {
UIBarMetricsDefault, //竖屏
UIBarMetricsLandscapePhone, 横屏
} UIBarMetrics;
//当选中不同的segment时,
可以视使用的场合,有三种风格选择,如下:
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,因此也就无法通过这个属性得到当前选取的片段。
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,因此也就无法通过这个属性得到当前选取的片段。
相关文章推荐
- StringBuffer与StringBuilder之间区别
- 1051. Pop Sequence (25)
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- 判读鼠标是否在UI上
- HDU1005 Number Sequence
- 何时执行ServletRequestAware和ServletRequestAware相关操作
- avalon学习笔记(1) avalon+oniui+ajax实现smartgrid的无刷新分页
- codeforces 670E Correct Bracket Sequence Editor
- Java中return,break和continue的用法及区别
- IOS-UITableView开发常用各种方法总结
- 禁止UITextField输入字符 只能输入数字
- CDH版本Hbase二级索引方案Solr key value index
- QUICK START GUIDE
- druid 数据库密码加密
- easyui的treegrid数据转换代码
- Java学习笔记之字符串 和 StringBuilder类
- 【EasyUI-加载完Html内容样式渲染完成后显示】
- 使用UILocalizedIndexedCollation实现区域索引排序 及 不显示没有数据的区域
- window.event.returnValue
- 05.手把手教你 .Net EasyUI DataGrid(完整的增删查改)