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年的出现到现在,一步一步变的完善,渐渐变的受欢 ...
随机推荐
- Windows IIS 安装配置PHP环境
一. 概述 二.安装PHP 1.到php官网下载最新版PHP http://windows.php.net/download 三.配置IIS PHP环境
- buildroot使用详解
为什么要使用buildroot? (文件系统搭建,强烈建议直接用buildroot,官网[http://buildroot.uclibc.org/]上有使用教程非常详细)文件系统通常要包含很多第三方软 ...
- EUI List列表实现人物列表
一 Scroll+List ,拖动组件到exml. List不能写定高度,不然无法自动扩展. 二 新建List条目皮肤, ListItemSkin皮肤 名字Label的文本{data.name} ...
- AIX 环境下遇到Device Busy问题
IBM AIX v5.3操作系统环境下在对网络或网卡进行操作过程中经常遇到"Device Busy"而终止操作例如:#rmdev -l ent1遇到如下返回信息Method err ...
- Logstash 父子关系 配置
最近在使用Lostash的过程中遇到了一个问题:在一个log文件里包含两类数据,而且两类数据之间存在父子关系,那如何使用lostash的configuration实现这个需求呢 思路: 首先定义父事件 ...
- 一步一步学WebSocket(二) 使用SuperWebSocket实现自己的服务端
上一篇文章,我们了解了客户端如何与服务器创建WebSocket连接.但是一个巴掌拍不响,既然是通信,就必然最少要有两个端.今天我们来看看c#如何用已有的框架实现一个WebSocket服务端. 在.Ne ...
- 用fxc.exe编译shader文件(*.fx, *.hlsl)的设置
原文出自:http://msdn.microsoft.com/en-us/library/windows/desktop/bb509709(v=vs.85).aspx#Profiles 拿DX11 S ...
- js 赋值 要用 toString() ; 太坑了。
js 赋值 要用 toString() ; 太坑了. js 赋值 要用 toString() ; 太坑了. js 赋值 要用 toString() ; 太坑了.
- 如何在真机装linux(本人在台式机上又添了个硬盘)
首先呢,本人就是小渣渣,所以对于装ubuntu在真机,刚开始真不知道如何下手,以前只是在虚拟机中装过,在经过查阅各种资料后,成功安装,我的台式机本身装的系统win7,是下面就是我安装的过程啦 1. 我 ...
- RPC 框架通信原理
RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据: ...