segmented control的使用
转自: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模拟器。
生成控件,代码如下:
- - (void)initSegmentedControl
- {
- NSArray *segmentedData = [[NSArray alloc]initWithObjects:@"apple",@"orange",@"banana",nil];
- UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]initWithItems:segmentedData];
- segmentedControl.frame = CGRectMake(10.0, 20.0,300.0, 30.0);
- /*
- 这个是设置按下按钮时的颜色
- */
- segmentedControl.tintColor = [UIColor colorWithRed:49.0 / 256.0 green:148.0 / 256.0 blue:208.0 / 256.0 alpha:1];
- segmentedControl.selectedSegmentIndex = 0;//默认选中的按钮索引
- /*
- 下面的代码实同正常状态和按下状态的属性控制,比如字体的大小和颜色等
- */
- NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont boldSystemFontOfSize:12],NSFontAttributeName,[UIColor redColor], NSForegroundColorAttributeName, nil nil];
- [segmentedControl setTitleTextAttributes:attributes forState:UIControlStateNormal];
- NSDictionary *highlightedAttributes = [NSDictionary dictionaryWithObject:[UIColor redColor] forKey:NSForegroundColorAttributeName];
- [segmentedControl setTitleTextAttributes:highlightedAttributes forState:UIControlStateHighlighted];
- //设置分段控件点击相应事件
- [segmentedControl addTarget:self action:@selector(doSomethingInSegment:)forControlEvents:UIControlEventValueChanged];
- [self.view addSubview:segmentedControl];
- }
每个功能注释都有清晰的描述,有一点要特别说明一下:
在ios7以前,segmentedcontrol有一个segmentedControlStyle 属性,通常都要设置,比如像下面这样:
- /*
- typedef enum {
- UISegmentedControlStylePlain,
- UISegmentedControlStyleBordered,
- UISegmentedControlStyleBar,
- UISegmentedControlStyleBezeled,
- } UISegmentedControlStyle;
- */
- segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
但是这个在ios7之后,出于扁平化风格的考虑,这些style都不在有效了
我们再写一个按钮的事件响应函数,设置不同的背景图片,如下:
- -(void)doSomethingInSegment:(UISegmentedControl *)Seg
- {
- NSInteger Index = Seg.selectedSegmentIndex;
- switch (Index)
- {
- case 0:
- self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:kSrcName(@"bg_apple_small.png")]];
- break;
- case 1:
- self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:kSrcName(@"bg_orange_small.png")]];
- break;
- case 2:
- self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:kSrcName(@"bg_banana_small.png")]];
- break;
- default:
- break;
- }
- }
代码比较简单。关键是理解segmented control的应用场景,灵活运用。除了第一幅图中的游戏程序,我这里再举一个例子,很多时候会把segmented control嵌套在navigation bar里面使用,以减少navigationview之间的层级数量,给用户较好的体验,就像下面这样:
segmented control的使用相关推荐
- 什么是segmented control
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/27086877 作者:小马 什么是segmented control? 先上几张图: ...
- SwiftUI 自定义 segmented control
无聊的开始: 需要创建一个segmented control,效果如下: 是不是看着很眼熟,没错,很像Android上的对不对?!黑色下划线会移动到所选择的title下面,而且能根据文字的长度自动伸缩 ...
- Segmented Control 教程
作者:Arthur Knopper,原文链接,原文日期:2016-10-18 译者:Crystal Sun:校对:星夜暮晨:定稿:CMB Segmented Control 用于展示一些用户可以选择的 ...
- Scroll Segmented Control(Swift)
今天用了一个github上一个比较好用的Segmented Control但是发现不是我要效果,我需要支持scrollView.当栏目数量超过一屏幕,需要能够滑动. 由于联系作者没有回复,我就自己在其 ...
- Syncfusion教程:在Xamarin.Forms中创建数据输入表单 (3)
2019独角兽企业重金招聘Python工程师标准>>> 下载Essential Studio for Xamarin最新版本 Essential Studio for Xamarin ...
- UIView的几个枚举定义
UIView是iOS开发最基本的视图,很多控件都是继承它,掌握其中的几个基本枚举定义,有利益理解视图的加载和参数区别. 一.UIViewAnimationCurve UIView的基本动画变化规律 t ...
- iOS 9音频应用播放音频之音量设置与声道设置
iOS 9音频应用播放音频之音量设置与声道设置 iOS 9音频应用音量设置 音量又称响度.音强,是指人耳对所听到的声音大小强弱的主观感受,其客观评价尺度是声音的振幅大小.在iOS 9音频应用的应用中, ...
- 使用HMSegmentedControl实现分段控件
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X×××:点我传送 HMSegme ...
- iOS 9 学习系列:UIStack View
http://www.cocoachina.com/ios/20150921/13492.html 在 iOS9 中,Apple 引入了 UIStackView,他让你的应用可以通过简单的方式,纵向或 ...
最新文章
- 程序员的生活就是这么朴实无华,且没钱
- python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态
- 嗯?time命令Linux time // 对比印象中的time()函数
- go 切片slice删除元素的方法
- python sys模块
- [vue-cli]vue-cli默认是单页面的,那要弄成多页面该怎么办呢
- 编写高效且优雅的 Python 代码
- Ethereum 以太坊 交易数据 构建原理
- Spring中HibernateCallback的用法(转)
- Matlab 用sort函数排序 二维数组
- Installer - 使用Maven自动布署至外部Tomcat
- 重定向后路径上自动添加jsessionid=
- Django项目定时任务(django-crontab)
- tomcat 启动显示日志级别,以及SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder.错误
- Office 2016 Pro Plus \ Project 专业版 \ Visio 专业版 \ 64 位vol版本方便KMS小马oem
- QT笔记——临时的悬浮窗口
- 锐起无盘精华100问!(包括3.1,3.0版本)
- Git 命令行的各种退出方式
- DiskPart 常用操作【Windows】
- 微信公众号网页底部不带返回栏 或者想要隐藏微信的底部导航栏