// http://www.tuicool.com/articles/yUfURj 使用方法

如上图: 分两步:

一、创建320长度背景,高不超过40最好

  1. //segment背景图
  2. UIImageView *segBgImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"segmented_bg.png"]];
  3. [segBgImg setUserInteractionEnabled:YES];
  4. [segBgImg setFrame:CGRectMake(0, 44, 320, 38)];
  5. //segment实例对象及初始化
  6. UISegmentedControl *segment = [[UISegmentedControl alloc] initWithItems:nil];
  7. segment.selectedSegmentIndex = 0;
  8. [segment insertSegmentWithImage:[UIImage imageNamed:@"segmented_price_all_selected.png"] atIndex:0 animated:NO];
  9. [segment insertSegmentWithImage:[UIImage imageNamed:@"segmented_price_free.png"] atIndex:1 animated:NO];
  10. segment.frame = CGRectMake(10, 5, 184, 28);
  11. [segment setMomentary:YES];
  12. [segment addTarget:self action:@selector(segmentClick:) forControlEvents:UIControlEventValueChanged];
  13. [segBgImg addSubview:segment];
  14. [segment release];
  15. [self.view addSubview:segBgImg];
  16. [segBgImg release];

二、segmentClick相应事件中选中当前焦点

  1. //选择时触发
  2. - (void)segmentClick:(UISegmentedControl *)segment
  3. {
  4. NSInteger index = segment.selectedSegmentIndex;
  5. switch (index) {
  6. case 0: //全部
  7. [segment setImage:[UIImage imageNamed:@"segmented_price_all_selected.png"] forSegmentAtIndex:0];
  8. [segment setImage:[UIImage imageNamed:@"segmented_price_free.png"] forSegmentAtIndex:1];
  9. break;
  10. case 1: //免费
  11. [segment setImage:[UIImage imageNamed:@"segmented_price_all.png"] forSegmentAtIndex:0];
  12. [segment setImage:[UIImage imageNamed:@"segmented_price_free_selected.png"] forSegmentAtIndex:1];
  13. break;
  14. }
  15. }
  1. - (void)viewDidLoad {
  2. NSArray *segmentedArray = [[NSArray alloc]initWithObjects:@"1",@"2",@"3",@"4",nil];
  3. //初始化UISegmentedControl
  4. UISegmentedControl * segmentedControl = [[UISegmentedControl alloc]initWithItems:segmentedArray];
  5. segmentedControl.frame = CGRectMake(60.0, 10.0, 200.0, 50.0);
  6. segmentedControl.segmentedControlStyle = 2;
  7. [segmentedControl setTitle:@"two" forSegmentAtIndex:1];//设置指定索引的题目
  8. [segmentedControl setImage:[UIImage imageNamed:@"lan.png"] forSegmentAtIndex:3];//设置指定索引的图片
  9. [segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"mei.png"] atIndex:2 animated:NO];//在指定索引插入一个选项并设置图片
  10. [segmentedControl insertSegmentWithTitle:@"insert" atIndex:3 animated:NO];//在指定索引插入一个选项并设置题目
  11. [segmentedControl removeSegmentAtIndex:0 animated:NO];//移除指定索引的选项
  12. [segmentedControl setWidth:70.0 forSegmentAtIndex:2];//设置指定索引选项的宽度
  13. [segmentedControl setContentOffset:CGSizeMake(10.0,10.0) forSegmentAtIndex:1];//设置选项中图片等的左上角的位置
  14. //获取指定索引选项的图片imageForSegmentAtIndex:
  15. UIImageView *imageForSegmentAtIndex = [[UIImageView alloc]initWithImage:[segmentedControl imageForSegmentAtIndex:1]];
  16. imageForSegmentAtIndex.frame = CGRectMake(60.0, 100.0, 30.0, 30.0);
  17. //获取指定索引选项的标题titleForSegmentAtIndex
  18. UILabel *titleForSegmentAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(100.0, 100.0, 30.0, 30.0)];
  19. titleForSegmentAtIndex.text = [segmentedControl titleForSegmentAtIndex:0];
  20. //获取总选项数segmentedControl.numberOfSegments
  21. UILabel *numberOfSegments = [[UILabel alloc]initWithFrame:CGRectMake(140.0, 100.0, 30.0, 30.0)];
  22. numberOfSegments.text = [NSString stringWithFormat:@"%d",segmentedControl.numberOfSegments];
  23. //获取指定索引选项的宽度widthForSegmentAtIndex:
  24. UILabel *widthForSegmentAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(180.0, 100.0, 70.0, 30.0)];
  25. widthForSegmentAtIndex.text = [NSString stringWithFormat:@"%f",[segmentedControl widthForSegmentAtIndex:2]];
  26. segmentedControl.selectedSegmentIndex = 2;//设置默认选择项索引
  27. segmentedControl.tintColor = [UIColor redColor];
  28. segmentedControl.segmentedControlStyle = UISegmentedControlStylePlain;//设置样式
  29. segmentedControl.momentary = YES;//设置在点击后是否恢复原样
  30. [segmentedControl setEnabled:NO forSegmentAtIndex:4];//设置指定索引选项不可选
  31. BOOL enableFlag = [segmentedControl isEnabledForSegmentAtIndex:4];//判断指定索引选项是否可选
  32. NSLog(@"%d",enableFlag);
  33. }

注: 多个segment切换时用for循环处理一下即可

在UITableView顶部制作简单的UISegmentControl实例方法的更多相关文章

  1. Highcharts使用教程(1):制作简单图表

    今天我们要使用JavaScript图表Highcharts制作简单的柱形图,我们已经安装好Highcharts,让我们开始制作图表吧. 步骤一 在网页中添加一个div.设置id,设置图表长.高.代码如 ...

  2. ZAM 3D 制作简单的3D字幕 流程(二)

    原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...

  3. iOS开发UI篇—UITableview控件简单介绍

    iOS开发UI篇—UITableview控件简单介绍 一.基本介绍 在众多移动应⽤用中,能看到各式各样的表格数据 . 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UIT ...

  4. iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)

    iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一) 一.项目结构和plist文件 二.实现代码 1.说明: 主控制器直接继承UITableViewController // ...

  5. phalcon: eventManager事件管理(结合dispatcher调度控制器)制作简单的acl

    制作简单的acl, dispatcher(专门用来加载或调度或跳转到相应的url地址即XXXcontroller的调度器或控制器,能够在controller执行前对controller进行停止跳转等) ...

  6. canvas制作简单动画

    在画布元素<canvas>中,除了绘制图形.图像.文字外,还可以制作一些简单的动画,制作过程十分简单,主要分为两步操作: 1.自定义一个函数,用于图形的移动或其他动作. 2.使用setIn ...

  7. JSP制作简单登陆

    JSP制作简单登陆界面 运行环境 eclipse+tomcat+MySQL 不知道的可以参考Jsp运行环境--Tomcat 项目列表 这里我先把jsp文件先放在Web-INF外面访问 需要建立的几个文 ...

  8. iOS开发基础-UITableView控件简单介绍

     UITableView 继承自 UIScrollView ,用于实现表格数据展示,支持垂直滚动.  UITableView 需要一个数据源来显示数据,并向数据源查询一共有多少行数据以及每一行显示什么 ...

  9. Photoshop 基础三 制作简单按钮

    要求知识点:移动工具.选择工具.套索工具.多边行工具.文本工具.路径选择工具.裁剪.填充 一.制作简单按钮 1)新建画布,大小随便 2)画圆角矩形工具(同时定义背景色.边框是否需求.边框颜色) 3)打 ...

随机推荐

  1. [转]Django时间查询

    1.gt:大于某个时间 now = datetime.datetime.now() 前一天 start = now – datetime.timedelta(hours=23, minutes=59, ...

  2. 搞懂spring事务

    最近一个官网的项目,我在service层有两个添加数据的操作,很意外报错了,然后就研究到了事务 之前只是知道声明式事务和编程式事务,编程式的事务显得比较麻烦,一般都是使用声明式事务.. spring提 ...

  3. NEST 中的时间单位

    Time units 英文原文地址:Time units 与 Elasticsearch 交互,我们会遇到需要设定时间段的情况(例如:timeout 参数).为了指定时间段,我们可以使用一个表示时间的 ...

  4. 洛谷 P3370 【模板】字符串哈希

    洛谷 P3370 [模板]字符串哈希 题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. 友情提醒:如果真的 ...

  5. 1c19b35b005744d55261682b361804fa 这个是MD5

    1c19b35b005744d55261682b361804fa   这个是MD51c19b35b005744d55261682b361804fa   这个是MD51c19b35b005744d552 ...

  6. Codeforces 834E The Bakery【枚举+数位dp】

    E. Ever-Hungry Krakozyabra time limit per test:1 second memory limit per test:256 megabytes input:st ...

  7. HDU 1874 畅通工程续【Floyd算法实现】

    畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  8. C++STL vector简单使用练习1

    #include <iostream> #include <vector> #include <numeric> using namespace std; int ...

  9. QQ群友在线/离线,如何测试?

    上篇文章『QQ好友在线/离线,如何测试?』针对即时通讯的"状态"进行了分析和总结,主要说到了QQ好友在线/离线实现方案,测试过程中需要注意的测试点. 针对好友状态实时性的要求需要使 ...

  10. ASP.NET CORE MVC 2.0 项目中引用第三方DLL报错的解决办法 - InvalidOperationException: Cannot find compilation library location for package

    目前在学习ASP.NET CORE MVC中,今天看到微软在ASP.NET CORE MVC 2.0中又恢复了允许开发人员引用第三方DLL程序集的功能,感到甚是高兴!于是我急忙写了个Demo想试试,我 ...