转自:http://blog.csdn.net/pony_maggie/article/details/27086877

什么是segmented control? 先上几张图:

      

            

这几幅图就是典型的segmented control UI视图, 第一幅是某个游戏程序,红色框出来的就是segmentedcontrol。 后面三幅是我这篇博文做的demo示例。

segmented control有如下几个特征:

1通常是在单视图中使用,不做多视图之间的切换。实现视图中不同显示的快速切换,每一个分割表示一个不同的显示,这些显示往往是相关的,所谓的相关,可以理解成,功能一样,但是属性类别有差异,比如上图游戏程序中的几个分割。

比较常用的还有比如说,在一个视图中,不同的分割控制tableView加载不同的数据源。

2 它通常在整个屏幕的上部,不是必然,但大部分情况下是这样用。

3 一般是3到5个分割,超过5个的话每个分割的大小对于用户触碰的体验会很差。

4 任意时刻,只有一个分割是激活状态的。有点像单选按钮。

开发环境:

mac os +xcode5.0 + ios7模拟器。

生成控件,代码如下:

[objc] view plaincopy
  1. - (void)initSegmentedControl
  2. {
  3. NSArray *segmentedData = [[NSArray alloc]initWithObjects:@"apple",@"orange",@"banana",nil];
  4. UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]initWithItems:segmentedData];
  5. segmentedControl.frame = CGRectMake(10.0, 20.0,300.0, 30.0);
  6. /*
  7. 这个是设置按下按钮时的颜色
  8. */
  9. segmentedControl.tintColor = [UIColor colorWithRed:49.0 / 256.0 green:148.0 / 256.0 blue:208.0 / 256.0 alpha:1];
  10. segmentedControl.selectedSegmentIndex = 0;//默认选中的按钮索引
  11. /*
  12. 下面的代码实同正常状态和按下状态的属性控制,比如字体的大小和颜色等
  13. */
  14. NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont boldSystemFontOfSize:12],NSFontAttributeName,[UIColor redColor], NSForegroundColorAttributeName, nil nil];
  15. [segmentedControl setTitleTextAttributes:attributes forState:UIControlStateNormal];
  16. NSDictionary *highlightedAttributes = [NSDictionary dictionaryWithObject:[UIColor redColor] forKey:NSForegroundColorAttributeName];
  17. [segmentedControl setTitleTextAttributes:highlightedAttributes forState:UIControlStateHighlighted];
  18. //设置分段控件点击相应事件
  19. [segmentedControl addTarget:self action:@selector(doSomethingInSegment:)forControlEvents:UIControlEventValueChanged];
  20. [self.view addSubview:segmentedControl];
  21. }

每个功能注释都有清晰的描述,有一点要特别说明一下:

在ios7以前,segmentedcontrol有一个segmentedControlStyle 属性,通常都要设置,比如像下面这样:

[objc] view plaincopy
  1. /*
  2. typedef enum {
  3. UISegmentedControlStylePlain,
  4. UISegmentedControlStyleBordered,
  5. UISegmentedControlStyleBar,
  6. UISegmentedControlStyleBezeled,
  7. } UISegmentedControlStyle;
  8. */
  9. segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;

但是这个在ios7之后,出于扁平化风格的考虑,这些style都不在有效了

我们再写一个按钮的事件响应函数,设置不同的背景图片,如下:

[objc] view plaincopy
  1. -(void)doSomethingInSegment:(UISegmentedControl *)Seg
  2. {
  3. NSInteger Index = Seg.selectedSegmentIndex;
  4. switch (Index)
  5. {
  6. case 0:
  7. self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:kSrcName(@"bg_apple_small.png")]];
  8. break;
  9. case 1:
  10. self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:kSrcName(@"bg_orange_small.png")]];
  11. break;
  12. case 2:
  13. self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:kSrcName(@"bg_banana_small.png")]];
  14. break;
  15. default:
  16. break;
  17. }
  18. }

代码比较简单。关键是理解segmented control的应用场景,灵活运用。除了第一幅图中的游戏程序,我这里再举一个例子,很多时候会把segmented control嵌套在navigation bar里面使用,以减少navigationview之间的层级数量,给用户较好的体验,就像下面这样:

         

segmented control的使用相关推荐

  1. 什么是segmented control

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/27086877 作者:小马 什么是segmented control? 先上几张图: ...

  2. SwiftUI 自定义 segmented control

    无聊的开始: 需要创建一个segmented control,效果如下: 是不是看着很眼熟,没错,很像Android上的对不对?!黑色下划线会移动到所选择的title下面,而且能根据文字的长度自动伸缩 ...

  3. Segmented Control 教程

    作者:Arthur Knopper,原文链接,原文日期:2016-10-18 译者:Crystal Sun:校对:星夜暮晨:定稿:CMB Segmented Control 用于展示一些用户可以选择的 ...

  4. Scroll Segmented Control(Swift)

    今天用了一个github上一个比较好用的Segmented Control但是发现不是我要效果,我需要支持scrollView.当栏目数量超过一屏幕,需要能够滑动. 由于联系作者没有回复,我就自己在其 ...

  5. Syncfusion教程:在Xamarin.Forms中创建数据输入表单 (3)

    2019独角兽企业重金招聘Python工程师标准>>> 下载Essential Studio for Xamarin最新版本 Essential Studio for Xamarin ...

  6. UIView的几个枚举定义

    UIView是iOS开发最基本的视图,很多控件都是继承它,掌握其中的几个基本枚举定义,有利益理解视图的加载和参数区别. 一.UIViewAnimationCurve UIView的基本动画变化规律 t ...

  7. iOS 9音频应用播放音频之音量设置与声道设置

    iOS 9音频应用播放音频之音量设置与声道设置 iOS 9音频应用音量设置 音量又称响度.音强,是指人耳对所听到的声音大小强弱的主观感受,其客观评价尺度是声音的振幅大小.在iOS 9音频应用的应用中, ...

  8. 使用HMSegmentedControl实现分段控件

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X×××:点我传送 HMSegme ...

  9. iOS 9 学习系列:UIStack View

    http://www.cocoachina.com/ios/20150921/13492.html 在 iOS9 中,Apple 引入了 UIStackView,他让你的应用可以通过简单的方式,纵向或 ...

最新文章

  1. 程序员的生活就是这么朴实无华,且没钱
  2. python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态
  3. 嗯?time命令Linux time // 对比印象中的time()函数
  4. go 切片slice删除元素的方法
  5. python sys模块
  6. [vue-cli]vue-cli默认是单页面的,那要弄成多页面该怎么办呢
  7. 编写高效且优雅的 Python 代码
  8. Ethereum 以太坊 交易数据 构建原理
  9. Spring中HibernateCallback的用法(转)
  10. Matlab 用sort函数排序 二维数组
  11. Installer - 使用Maven自动布署至外部Tomcat
  12. 重定向后路径上自动添加jsessionid=
  13. Django项目定时任务(django-crontab)
  14. tomcat 启动显示日志级别,以及SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder.错误
  15. Office 2016 Pro Plus \ Project 专业版 \ Visio 专业版 \ 64 位vol版本方便KMS小马oem
  16. QT笔记——临时的悬浮窗口
  17. 锐起无盘精华100问!(包括3.1,3.0版本)
  18. Git 命令行的各种退出方式
  19. DiskPart 常用操作【Windows】
  20. 微信公众号网页底部不带返回栏 或者想要隐藏微信的底部导航栏

热门文章

  1. C#toolStrip使用
  2. 猫耳宝贝:“网络打女”身手不凡
  3. 如何用jconsole连接远程的springboot程序?(实测可行,网上其他的有点问题)
  4. express的supervisor
  5. P3628 [APIO2010]特别行动队
  6. 2个小投资不起眼的冷门小生意
  7. 学生成绩智能分析系统—教师端的设计与实现
  8. 3-36串AFE芯片锂电池国产BMS模拟前端采集保护芯片
  9. Python中remove漏删和索引越界问题
  10. Linux下文件差异比较工具