一、创建

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

UISegmentedControl 控件的更多相关文章

  1. RadioGroup实现类似ios的分段选择(UISegmentedControl)控件

    在ios7中有一种扁平风格的控件叫做分段选择控件UISegmentedControl,控件分为一排,横放着几个被简单线条隔开的按钮,每次点击只能选择其中一个按钮,他类似于tabbar但是又稍微有点区别 ...

  2. 【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )

    转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50163725 一. 分段控件 (UISegmentedControl) 控件展 ...

  3. 【UISegmentedControl】-  分段控件

    一.初始化 二.常见的属性 1.segmentedControlStyle属性:设置基本的样式 2.momentary属性:设置在点击后是否恢复原样 . 3.numberOfSegments属性:只读 ...

  4. Swift - 分段选择控件(UISegmentedControl)的用法

    1,选择控件的创建,并监听控件选择值 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 class ViewController: UIVie ...

  5. UISegmentedControl——分段控件

    分段控件,提供了一组按钮,但是只能激活一个.通过UIControlEventValueChanged事件实现与用户的交互,并通过selectedSegmentIndex判断当前选定的控件,通过titl ...

  6. iOS开发之七:常用控件--UISlider、UISegmentedControl、UIPageControl的使用

    一.UISlider的使用 其实UISlider在iOS开发中用的似乎不是很多,我们看到的用到的地方多是音乐播放器的音量控制,以及视频播放器中的音量控制. 还是记录一下吧! 1.常用属性 // 设置获 ...

  7. iOS开发基础控件--UISegmentedControl

    UISegmentedControl全局外观设置 分段控件是我们常用的控件之一,今天把具体用法总结了下: 1.初始化UISegmentedControl [plain] view plaincopy ...

  8. iOS:分段控件UISegmentedControl的详细使用

    分段控件:UISegmentedControl   功能:分段的控制.页面的切换等.   介绍:当用户输入不仅仅是布尔值时,可使用分段控件(UISegmentedControl).分段控件提供一栏按钮 ...

  9. Swift学习之熟悉控件

    最近是比较清闲一些的,对于一个开发者来说,这也是一个很好的充电机会.以前做项目都是使用Objective-C去开发,但我们都知道,Swift语言从2014年的出现到现在,一步一步变的完善,渐渐变的受欢 ...

随机推荐

  1. 这些年正Android - 大学

     还记得,第一次看见小周是在大一的操场上. 她正向教学楼站着,一身白配粉的休闲上衣搭配湖蓝色的牛仔裤,穿着一双很平凡的凉鞋,手里拿着当年的Nokia 3110c,皙清的手指,素颜的站着不言不笑.现在回 ...

  2. MySQL For Windows Zip解压版安装

    前言 Windows 下 MySQL 有msi和zip解压安装版两种,而zip版只需解压并做简单配置后就能使用,我个人比较喜欢这种方式. 注意我们这里说的MySQL是指MySQL服务器,有很多初学的同 ...

  3. CentOS 6下Apache的https虚拟主机实践

    题目:1.建立httpd服务器,要求: 提供两个基于名称的虚拟主机: (a)www1.buybybuy.com,页面文件目录为/web/vhosts/www1:错误日志为/var/log/httpd/ ...

  4. Python自动化 【第十七篇】:jQuery介绍

    jQuery jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多),对javascript进行了封装,是的更加便捷的开发,并且在 ...

  5. ycm添加自定义补全路径

    修改~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py的flags变量 未改前如下: flags = [  ...

  6. http请求的开销

    很多人都说要减少http请求,可关注为什么要减少请求的人却少很多,本文是对我在几篇博客以及知乎上看到的内容的整理. http请求头的数据量 每次请求都会带上一些额外的信息进行传输,当请求的资源很小,比 ...

  7. convert return char from sql server 2008 r2 or below version to c#

    C# string.Replace((char)13, ' ') //newline char; string.Replace((char)10, ' ') //return char;

  8. python学习心得第三章

    python学习心得第三章 1.三元运算 变量=值1 if 条件 else 值2 由图如果条件成立则赋值1给变量,如果条件不成立则赋值2给变量. 2.数据类型 集合:set() class set(o ...

  9. c++面试题

    转自http://blog.csdn.net/jingxuewang110/article/details/6789557/ 1.new.delete.malloc.free关系 delete会调用对 ...

  10. Unity5 AssetBundle 打包以及加载

    using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEditor; us ...