iOS开发基础控件--UISegmentedControl

分段控件是我们常用的控件之一,今天把具体用法总结了下:
1.初始化UISegmentedControl
- NSArray *segmentedArray = [[NSArray alloc]initWithObjects:@"1",@"2",@"3",nil];
- UISegmentedControl *segmentedTemp = [[UISegmentedControl alloc]initWithItems:segmentedArray];
- self.segmentedControl = segmentedTemp;
- segmentedControl.frame = CGRectMake(10.0, 10.0, 300.0, 29.0);
- 2.常用属性及设置方法如下:
- //设置指定索引的题目
- [segmentedControl setTitle:@"1" forSegmentAtIndex:1];
- //设置指定索引的图片
- [segmentedControl setImage:[UIImage imageNamed:@"home.png"] forSegmentAtIndex:2];
- //在指定索引插入一个选项并设置图片
- [segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"more.png"] atIndex:2 animated:NO];
- //在指定索引插入一个选项并设置题目
- [segmentedControl insertSegmentWithTitle:@"new" atIndex:3 animated:NO];
- //移除指定索引的选项
- [segmentedControl removeSegmentAtIndex:0 animated:NO];
- //设置指定索引选项的宽度
- [segmentedControl setWidth:60.0 forSegmentAtIndex:2];
- //设置选项中图片等的左上角的位置
- //[segmentedControl setContentOffset:CGSizeMake(10.0,10.0) forSegmentAtIndex:1];
- //设置默认选择项索引
- segmentedControl.selectedSegmentIndex = 2;
- //分段控件的颜色,只有样式为UISegmentedControlStyleBar的时候才有效果
- segmentedControl.tintColor = [UIColor redColor];
- //设置样式
- segmentedControl.segmentedControlStyle = UISegmentedControlStyleBordered;
- //设置在点击后是否恢复原样
- segmentedControl.momentary = NO;
- //设置指定索引选项不可选
- [segmentedControl setEnabled:NO forSegmentAtIndex:3];
- //判断指定索引选项是否可选
- BOOL enableFlag = [segmentedControl isEnabledForSegmentAtIndex:3];
- NSLog(@"%d",enableFlag);
3.分段控件点击事件:
- [segmentedControl addTarget:self
- action:@selector(segmentAction:)
- forControlEvents:UIControlEventValueChanged];
响应的事件:
- -(void)segmentAction:(UISegmentedControl *)Seg
- {
- NSInteger index = Seg.selectedSegmentIndex;
- switch (index) {
- case 0:
- NSLog(@"0 clicked.");
- break;
- case 1:
- NSLog(@"1 clicked.");
- break;
- case 2:
- NSLog(@"2 clicked.");
- break;
- case 3:
- NSLog(@"3 clicked.");
- break;
- case 4:
- NSLog(@"4 clicked.");
- break;
- default:
- break;
- }
- }
4.获取分段控件相应的值:
- //获取指定索引选项的图片imageForSegmentAtIndex:
- UIImageView *imageForSegmentAtIndex = [[UIImageView alloc]initWithImage:[segmentedControl imageForSegmentAtIndex:1]];
- imageForSegmentAtIndex.frame = CGRectMake(60.0, 100.0, 30.0, 30.0);
- //获取指定索引选项的标题titleForSegmentAtIndex
- UILabel *titleForSegmentAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(100.0, 100.0, 30.0, 30.0)];
- titleForSegmentAtIndex.text = [segmentedControl titleForSegmentAtIndex:0];
- //获取总选项数segmentedControl.numberOfSegments
- UILabel *numberOfSegments = [[UILabel alloc]initWithFrame:CGRectMake(140.0, 100.0, 30.0, 30.0)];
- numberOfSegments.text = [NSString stringWithFormat:@"%d",segmentedControl.numberOfSegments];
- //获取指定索引选项的宽度widthForSegmentAtIndex:
- UILabel *widthForSegmentAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(180.0, 100.0, 70.0, 30.0)];
- widthForSegmentAtIndex.text = [NSString stringWithFormat:@"%f",[segmentedControl widthForSegmentAtIndex:2]];
但是这样的分段控件只有固定的几种样式。在IOS5以后,可以全局的设置一些控件的外观,分段控件就是其中一个(全局设置UISegmentedControl外观):
- //cap insets用来指定哪些区域是固定不变的,未制定的区域则会repeat
- UIImage *segmentSelected = [[UIImage imageNamed:@"bg_o.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];
- UIImage *segmentUnselected = [[UIImage imageNamed:@"bg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];
- UIImage *segmentSelectedUnselected = [UIImage imageNamed:@"line.png"] ;
- UIImage *segUnselectedSelected = [UIImage imageNamed:@"line.png"] ;
- UIImage *segmentUnselectedUnselected = [UIImage imageNamed:@"line.png"];
- //Segmente未选中背景
- [[UISegmentedControl appearance] setBackgroundImage:segmentUnselected
- forState:UIControlStateNormal
- barMetrics:UIBarMetricsDefault];
- //Segmente选中背景
- [[UISegmentedControl appearance] setBackgroundImage:segmentSelected
- forState:UIControlStateSelected
- barMetrics:UIBarMetricsDefault];
- //Segmente左右都未选中时的分割线
- //BarMetrics表示navigation bar的状态,UIBarMetricsDefault 表示portrait状态(44pixel height),UIBarMetricsLandscapePhone 表示landscape状态(32pixel height)
- [[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected
- forLeftSegmentState:UIControlStateNormal
- rightSegmentState:UIControlStateNormal
- barMetrics:UIBarMetricsDefault];
- [[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected
- forLeftSegmentState:UIControlStateSelected
- rightSegmentState:UIControlStateNormal
- barMetrics:UIBarMetricsDefault];
- [[UISegmentedControl appearance] setDividerImage:segUnselectedSelected
- forLeftSegmentState:UIControlStateNormal
- rightSegmentState:UIControlStateSelected
- barMetrics:UIBarMetricsDefault];
- //字体
- NSDictionary *textAttibutesUnSelected = [NSDictionary dictionaryWithObjectsAndKeys:
- [UIFont systemFontOfSize:18],UITextAttributeFont,
- [UIColor blackColor],UITextAttributeTextColor,
- [UIColor whiteColor],UITextAttributeTextShadowColor,
- [NSValue valueWithCGSize:CGSizeMake(1, 1)],UITextAttributeTextShadowOffset,nil];
- NSDictionary *textAttibutesSelected = [NSDictionary dictionaryWithObjectsAndKeys:
- [UIFont systemFontOfSize:18],UITextAttributeFont,
- [UIColor whiteColor],UITextAttributeTextColor,
- [UIColor whiteColor],UITextAttributeTextShadowColor,
- [NSValue valueWithCGSize:CGSizeMake(0, 0)],UITextAttributeTextShadowOffset,nil];
- [[UISegmentedControl appearance] setTitleTextAttributes:textAttibutesUnSelected
- forState:UIControlStateNormal];
- [[UISegmentedControl appearance] setTitleTextAttributes:textAttibutesSelected
- forState:UIControlStateSelected];
iOS开发基础控件--UISegmentedControl的更多相关文章
- iOS开发基础控件--UIButton
01 //这里创建一个圆角矩形的按钮 02 UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 03 ...
- iOS开发基础控件--UILabel
UILabel 的常见属性和方法: //创建UIlabel对象 UILabel* label = [[UILabel alloc] initWithFrame:self.view.bounds]; / ...
- iOS开发基础控件--UITextField
001 //初始化textfield并设置位置及大小 002 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20 ...
- iOS:分段控件UISegmentedControl的详细使用
分段控件:UISegmentedControl 功能:分段的控制.页面的切换等. 介绍:当用户输入不仅仅是布尔值时,可使用分段控件(UISegmentedControl).分段控件提供一栏按钮 ...
- IOS(一) 基础控件的介绍以及使用
IOS的界面的制作,相对于Android来说 简洁了很多,虽然创建布局的方式都是两种(代码创建.布局文件) 但是Android中的xml布局文件在某些方面也属于代码创建,因为自己使用到得每一个属性 都 ...
- 【ios开发】控件细究1:UITableView
工作了将近两个月,共接手两个项目,在项目中用的最多的就是UITableView了,但是也是问题出现的最多的地方,由于一开始不熟练,导致很多问题花了很长时间才解决.所以利用这两天空闲时间,好好梳理一下这 ...
- iOS开发-DatePicker控件
时间控件不管是Android还是iOS中都是必然存在的一个控件,具体的效果大同小异,显示日期,时间,iOS中有四种方式可以选择,Time, Date,Date and Time , Count Do ...
- IOS开发之控件篇UINavigationController第一章 - 介绍
UINavigationController是一个比较常见的控件,它连接个视图,例如一个视图走到另外一个视图,之间的联系都可以用这个NavigationController的方法 一般都会由两个部分组 ...
- IOS开发之控件篇UICollectionViewControllor第一章 - 普通介绍
1.介绍 UICollectionView和UICollectionViewControllor是IOS6.0后引入的新控件 使用UICollectionView必须实现三个接口: UICollect ...
随机推荐
- 基于模k可逆计数的数字锁相环fpga实现
参考http://wenku.baidu.com/view/59420cb069dc5022aaea00bd.html 实现结构是参考的上边的实例,我用的全同步实现,实现过程中发现一些现象,做下记录. ...
- bzoj1025(SCOI2009)游戏——唯一分解的思路与应用
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1025 可以认为对应的值之间连边,就连成了一个有一个或几个环的图.列数就是每个环里点数的lcm ...
- bzoj1503[NOI2004]郁闷的出纳员——Splay
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1503 好奇怪呀!为什么而TLE? 各种修改终于卡时过了.可是大家比我快多了呀?难道是因为自己 ...
- 4.Python爬虫小案例
1.网络爬虫定义:按照一定的规则,自动的抓取网站信息的程序或者脚本. 2.流程:request打开url得到html文档==浏览器打开源码分析元素节点==通过BeautifulSoup得到想要的数据= ...
- Android多线程断点下载的代码流程解析
Step 1:创建一个用来记录线程下载信息的表 创建数据库表,于是乎我们创建一个数据库的管理器类,继承SQLiteOpenHelper类 重写onCreate()与onUpgrade()方法 DBOp ...
- web开发视频(一)之环境准备
硬件环境: Win7+64位操作系统 1.安装 jdk.tomcat.eclipse; 2.配置 jdk 环境变量.tomcat环境变量 (jdk配置成功的标示是在命令提示符中输入 javac 给出对 ...
- java代码---I/O文件内容复制
总结:主要是弄清输入流,输出流 输入流和输出流都是针对程序而言,把文件内容读取到程序是输入流 从程序把内容写入文件是输出流 package com.a.b; import java.io.*; imp ...
- solr核心概念、配置文件
Document Document是Solr索引(动词,indexing)和搜索的最基本单元,它类似于关系数据库表中的一条记录,可以包含一个或多个字段(Field),每个字段包含一个name和文本值. ...
- 20181106_线程之异常_取消_变量_安全Lock
一. 线程的异常处理: try { TaskFactory taskFactory = new TaskFactory(); List<Task> taskList = new List& ...
- 【语音识别】Microsoft Speech Platform 自学笔记2 环境要求与安装过程
笔记人:又吹风 时 间:2012/12/16 主要内容:Microsoft Speech Platform的环境要求与安装过程. 上次也说过了,当前Microsoft Speech Platform最 ...
