一、创建

UISegmentedControl* mySegmentedControl = [[UISegmentedControl alloc]initWithItems:nil];

是不是很奇怪没有指定位置和大小呢?没错,我确实在他的类声明里只找到 initWithItems 而未找到 initWithFrame ,所以他不需要指定,不过我看到了另一个方法,这个方法可以设置Item的宽度:

  1. mySegmentedControl setWidth: forSegmentAtIndex:];//设置Item的宽度

二、属性

  1. mySegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;//风格

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

  1. typedef enum {
  2. UISegmentedControlStylePlain,     // large plain 有灰边的大白按钮,适合偏好设置单元
  3. UISegmentedControlStyleBordered,  // large bordered 黑边的大白按钮,适用于表格单元
  4. UISegmentedControlStyleBar,       // small button/nav bar style. tintable 小按钮,适合导航栏
  5. UISegmentedControlStyleBezeled,   // large bezeled style. tintable
  6. } UISegmentedControlStyle;

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

  1. UIColor *myTint = [[ UIColor alloc]initWithRed:0.66 green:1.0 blue:0.77 alpha:1.0];
  2. mySegmentedControl.tintColor = myTint;

三、添加、删除片段

每个分段控件的片段都是一个按钮,其中包含一个标签或图片。你需要在你的控件中为每个控件创建一个片段。只要屏幕放得下,就可以有许多片段,但用户同一时刻只能选择一个片段。

  1. [mySegmentedControl insertSegmentWithTitle:@ animated:YES];
  2. [mySegmentedControl insertSegmentWithTitle:@ animated:YES];

每个
按钮都被赋予一个索引,用这个索排序以及标识。
你也可以添加一个含有图像的片段,用inserSegmentWithImage

  1. [mySegmentedControl insertSegmentWithImage:[UIImage imageNamed:@ animated:YES];

删除片段

  1. [mySegmentedControl removeSegmentAtIndex: animated:YES];//删除一个片段
  2. [mySegmentedControl removeAllSegments];//删除所有片段

四、片段标题

  1. [mySegmentedControl setTitle:@];//设置标题
  2. NSString* myTitle = [mySegmentedControl titleForSegmentAtIndex:];//读取标题

五、图像

每个分段也可以设置图像:

  1. [mySegmentedControl setImage:[UIImage imageNamed:@];//设置
  2. UIImage* myImage = [mySegmentedControl imageForSegmentAtIndex:];//读取

注意:图像不会自动调整大小,图片多大就会原生地显示多大,所以你要通知做图的美工大小要精确。
六、选中分段

分段控件的默认行为是,一旦按钮被选中就一直保持,直到另外一个按钮被选中为止。你可以改变这种默认的行为,变成按钮按下后很快就自动释放。将控件的momentary属性设为YES:

  1. mySegmentedControl.momentary = YES;

注意:开启这个功能后点触片段不会更新 selectedSegmentedIndex,因此也就无法通过这个属性得到当前选取的片段。

初始化默认片段

默认情况下,除非你指定,否则不会有任何片段被选中。要设置 selectedSegmentedIndex 属性:

  1. mySegmentedControl.selectedSegmentedIndex = ;

七、显示控件

  1. [parentView addSubview:mySegmentedControl];//添加到父视图
  2. self.navigationItem.titleView = mySegmentedControl;//添加到导航栏

八、读取控件

通过 selectedSegmentedIndex 属性,可以读取当前选中分段的值,这个值就是选中片段的索引号。

  1. int x = mySegmentedControl. selectedSegmentedIndex;

九、通知

要接收片段选取的通知,可以用UIControl类的 addTarget 方法,为 UIControlEventValueChanged 事件添加一个动作:

  1. [mySegmentedControl addTarget:self action:@selector(selected:) forControlEvents:UIControlEventValueChanged];

只要选中了一个片段,你的动作方法就会被调用:

  1. -(void)selected:(id)sender{
  2. UISegmentedControl* control = (UISegmentedControl*)sender;
  3. switch (control.selectedSegmentIndex) {
  4. :
  5. //
  6. break;
  7. :
  8. //
  9. break;
  10. :
  11. //
  12. break;
  13. default:
  14. break;
  15. }
  16. }

十、Demo

最后附上我边写文章,边测试用的Demo:UISementedControlDemo

免费下载地址在 http://linux.linuxidc.com/

具体下载目录在 /2012年资料/3月/1日/UISegmentedControl 分段控件-iOS开发/

用户名与密码都是www.linuxidc.com

最新文章

  1. 批量处理sql 数据存入xml类型列
  2. c++左值和右值
  3. js 在页面上模拟多选,蚂蚁线线框
  4. 第40讲:Set、Map、TreeSet、TreeMap操作代码实战
  5. 黑马程序员——JAVA基础之多线程的线程间通讯等
  6. MySQL 5 绿色版(BAT版本) mysql50green转自http://hi.baidu.com/dburu/blog/item/e753fcc4362458aa8226accb.htmlMySQL 5 绿色版(BAT版本) By )
  7. hdu 3062 2-SAT问题
  8. ubuntu卸载qq2012
  9. 进程控制之wait3和wait4函数
  10. poj 1573Robot Motion
  11. 一个C++的多态和虚函数实例
  12. SPOJ3267--D-query (树状数组离线操作)
  13. xml之DOM方式解析,DOM4J工具解析原理
  14. MIP ACCESS细节剖析
  15. CSS 伪类 (Pseudo-classes)实例
  16. Mathmatica简介
  17. Xcode8兼容iOS7以及低版本Xcode调试高版本iOS系统
  18. cookie and sesssion
  19. [IOI2018]排座位——线段树
  20. jsp统计页面访问量和刷访问量的简单使用

热门文章

  1. 用OSSIM轻松分析网络设备日志
  2. MongoDB学习笔记(数据操作)
  3. What's going on in background?
  4. tomcat 7/8 启动非常慢的解决方法
  5. 让ztree树默认是关闭的
  6. 去掉IE下input的叉号
  7. 如何在真机装linux(本人在台式机上又添了个硬盘)
  8. Linux crontab定时执行任务
  9. WCF服务二:创建一个简单的WCF服务程序
  10. C# POST请求