UISegmentedControl 控件
一、创建
UISegmentedControl* mySegmentedControl = [[UISegmentedControl alloc]initWithItems:nil];
是不是很奇怪没有指定位置和大小呢?没错,我确实在他的类声明里只找到 initWithItems 而未找到 initWithFrame ,所以他不需要指定,不过我看到了另一个方法,这个方法可以设置Item的宽度:
- mySegmentedControl setWidth: forSegmentAtIndex:];//设置Item的宽度
二、属性
- mySegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;//风格
可以视使用的场合,有三种风格选择,如下:
- 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;
三、添加、删除片段
每个分段控件的片段都是一个按钮,其中包含一个标签或图片。你需要在你的控件中为每个控件创建一个片段。只要屏幕放得下,就可以有许多片段,但用户同一时刻只能选择一个片段。
- [mySegmentedControl insertSegmentWithTitle:@ animated:YES];
- [mySegmentedControl insertSegmentWithTitle:@ animated:YES];
每个
按钮都被赋予一个索引,用这个索排序以及标识。
你也可以添加一个含有图像的片段,用inserSegmentWithImage
- [mySegmentedControl insertSegmentWithImage:[UIImage imageNamed:@ animated:YES];
删除片段
- [mySegmentedControl removeSegmentAtIndex: animated:YES];//删除一个片段
- [mySegmentedControl removeAllSegments];//删除所有片段
四、片段标题
- [mySegmentedControl setTitle:@];//设置标题
- NSString* myTitle = [mySegmentedControl titleForSegmentAtIndex:];//读取标题
五、图像
每个分段也可以设置图像:
- [mySegmentedControl setImage:[UIImage imageNamed:@];//设置
- UIImage* myImage = [mySegmentedControl imageForSegmentAtIndex:];//读取
注意:图像不会自动调整大小,图片多大就会原生地显示多大,所以你要通知做图的美工大小要精确。
六、选中分段
分段控件的默认行为是,一旦按钮被选中就一直保持,直到另外一个按钮被选中为止。你可以改变这种默认的行为,变成按钮按下后很快就自动释放。将控件的momentary属性设为YES:
- mySegmentedControl.momentary = YES;
注意:开启这个功能后点触片段不会更新 selectedSegmentedIndex,因此也就无法通过这个属性得到当前选取的片段。
初始化默认片段
默认情况下,除非你指定,否则不会有任何片段被选中。要设置 selectedSegmentedIndex 属性:
- mySegmentedControl.selectedSegmentedIndex = ;
七、显示控件
- [parentView addSubview:mySegmentedControl];//添加到父视图
- 或
- self.navigationItem.titleView = mySegmentedControl;//添加到导航栏
八、读取控件
通过 selectedSegmentedIndex 属性,可以读取当前选中分段的值,这个值就是选中片段的索引号。
- int x = mySegmentedControl. selectedSegmentedIndex;
九、通知
要接收片段选取的通知,可以用UIControl类的 addTarget 方法,为 UIControlEventValueChanged 事件添加一个动作:
- [mySegmentedControl addTarget:self action:@selector(selected:) forControlEvents:UIControlEventValueChanged];
只要选中了一个片段,你的动作方法就会被调用:
- -(void)selected:(id)sender{
- UISegmentedControl* control = (UISegmentedControl*)sender;
- switch (control.selectedSegmentIndex) {
- :
- //
- break;
- :
- //
- break;
- :
- //
- break;
- default:
- break;
- }
- }
十、Demo
最后附上我边写文章,边测试用的Demo:UISementedControlDemo
免费下载地址在 http://linux.linuxidc.com/
具体下载目录在 /2012年资料/3月/1日/UISegmentedControl 分段控件-iOS开发/
用户名与密码都是www.linuxidc.com
UISegmentedControl 控件的更多相关文章
- RadioGroup实现类似ios的分段选择(UISegmentedControl)控件
在ios7中有一种扁平风格的控件叫做分段选择控件UISegmentedControl,控件分为一排,横放着几个被简单线条隔开的按钮,每次点击只能选择其中一个按钮,他类似于tabbar但是又稍微有点区别 ...
- 【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50163725 一. 分段控件 (UISegmentedControl) 控件展 ...
- 【UISegmentedControl】- 分段控件
一.初始化 二.常见的属性 1.segmentedControlStyle属性:设置基本的样式 2.momentary属性:设置在点击后是否恢复原样 . 3.numberOfSegments属性:只读 ...
- 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 ...
- UISegmentedControl——分段控件
分段控件,提供了一组按钮,但是只能激活一个.通过UIControlEventValueChanged事件实现与用户的交互,并通过selectedSegmentIndex判断当前选定的控件,通过titl ...
- iOS开发之七:常用控件--UISlider、UISegmentedControl、UIPageControl的使用
一.UISlider的使用 其实UISlider在iOS开发中用的似乎不是很多,我们看到的用到的地方多是音乐播放器的音量控制,以及视频播放器中的音量控制. 还是记录一下吧! 1.常用属性 // 设置获 ...
- iOS开发基础控件--UISegmentedControl
UISegmentedControl全局外观设置 分段控件是我们常用的控件之一,今天把具体用法总结了下: 1.初始化UISegmentedControl [plain] view plaincopy ...
- iOS:分段控件UISegmentedControl的详细使用
分段控件:UISegmentedControl 功能:分段的控制.页面的切换等. 介绍:当用户输入不仅仅是布尔值时,可使用分段控件(UISegmentedControl).分段控件提供一栏按钮 ...
- Swift学习之熟悉控件
最近是比较清闲一些的,对于一个开发者来说,这也是一个很好的充电机会.以前做项目都是使用Objective-C去开发,但我们都知道,Swift语言从2014年的出现到现在,一步一步变的完善,渐渐变的受欢 ...
随机推荐
- Dell_R710 centos5.4 网卡(BCM5709)中断故障解决
环境:Dell R710 Centos 5.4 i386 现象:正常运行中无故断网,没有规律 原因:RedHat As5.X 版本中的Broadcom NetXtreme II BCM 5709 ...
- IplImage, CvMat, Mat 的关系和相互转换(转)
(看到的一篇非常好的文章,讲opencv内部类之间的关系的.) opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重 ...
- vbox 不识别u盘的问题
usb设备 ->启用usb设备 ->启用usb2.0(ehci)控制器 添加usb筛选器 给筛选器起个名字
- spring 事务问题
今天碰到一个奇怪的问题,在service中执行方法,调用了两次dao,前面是save,在save后面抛错,竟然没回滚,难道不是一个事务? 后来网上查资料,发现spring的事务回滚必须是运行时异常Ru ...
- ThinkPHP单字母函数(快捷方法)使用总结
在ThinkPHP中有许多使用简便的单字母函数(即快捷方法),可以很方便开发者快速的调用,但是字母函数却不方便记忆,本文将所有的字母函数总结一下,以方便以后查找. 1.U() URL组装 支持不同UR ...
- ASP.NET 访问母版页元素总结
第一种方法: 在母版页里面新建一个Label控件 <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="s ...
- java多线程的几种实现方式记录
传统的实现线程的方式为三种,分别为继承Thread类,重写run()方法:实现Runable接口,重写run()方法:实现callable接口,重写call()方法:下面来记录一下最基本的三种编码实现 ...
- eclipse技巧,快捷键
快捷键: ctrl + 1,快速修复 ctrl + d, 快捷删除行 shift + Enter,快速移动光标到下一行 ctrl + F11,运行代码 alt + ↑/↓,快速移动行 ctrl + a ...
- MSSQL订阅库索引对齐
需求如下图: 在原来的架构中是每台web服务器都固定访问某一台数据库服务器,所以就造成了每台数据库订阅服务器上的索引不一致.现在的需求就是要把所有的订阅库上的索引调整为一致,为了就是实现高可用+负载均 ...
- HDOJ(2438)几何里的三分
Turn the corner http://acm.hdu.edu.cn/showproblem.php?pid=2438 题目:一辆车能否在一个路口拐弯,看图就很明白啦. 算法:见下图,只要求出图 ...