初始化UISegmentedControl

NSArray *arr = [[NSArray alloc]initWithObjects:@"轻拍",@"长按",@"清扫",@"旋转",@"捏合",@"拖拽", nil];

//先创建一个数组用于设置标题

UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:arr];

//在没有设置[segment setApportionsSegmentWidthsByContent:YES]时,每个的宽度按segment的宽度平分

segment.frame = CGRectMake(0, 400, 320, 40);

//设置frame

 

管理Segment的内容

[segment setTitle:@"大便" forSegmentAtIndex:3]; 

//设置下标为3的segment的标题 下标以0开始 iOS里的所有下标都是以0开始

[segment setImage:[UIImage imageNamed:@"3"] forSegmentAtIndex:4];

//设置下标为4的segment的图片

 

管理Segments

[segment insertSegmentWithImage:[UIImage imageNamed:@"3"] atIndex:2 animated:YES]; //设置图片

[segment insertSegmentWithTitle:@"ddd" atIndex:0 animated:YES];//设置标题

[segment numberOfSegments];//得到segment的数量

[segment removeAllSegments];//移出所有segment

[segment removeSegmentAtIndex:2 animated:YES];//移出下标为2的segment

segment.selectedSegmentIndex = 0;//选中第几个segment 一般用于初始化时选中

 

管理Segment的行为和外观   

segment.momentary = NO;

//默认为NO 当设置为YES时,当被选中后,一会儿后不显示被选中状态(最左边的样子),不选中状态即下图的右边几个按钮一样


segment.segmentedControlStyle = UISegmentedControlStyleBar;

typedef enum {
   UISegmentedControlStylePlain,
   UISegmentedControlStyleBordered,
   UISegmentedControlStyleBar,
   UISegmentedControlStyleBezeled,
} UISegmentedControlStyle;

//设置样式 当为Bordered和Bar时tintColor才有效 下图为tintcolor为红色时的样子

//Bar样式

//Bordered

//现在使用会报出警告,因为(NS_DEPRECATED_IOS(2_0, 7_0, "The segmentedControlStyle property no longer has any effect") __TVOS_PROHIBITED;)

[segment setEnabled:NO]; //设置segment是否可用 此方法是其父类UIControl的方法

[segment setEnabled:NO forSegmentAtIndex:2];//设置下标为2的segment不可用

[segment setWidth:100 forSegmentAtIndex:2]; //这时下表为2的segment的宽度

[segment setContentOffset:CGSizeMake(10, 10) forSegmentAtIndex:2];//设置内容偏移

segment.apportionsSegmentWidthsByContent = YES; //是否根据segment的内容改变segment的宽度

自定义外观

[segment setTintColor:[UIColor redColor]]; //设置segments的颜色

[segment setBackgroundImage:[UIImage imageNamed:@""] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

typedef enum {
    UIBarMetricsDefault,  //竖屏
    UIBarMetricsLandscapePhone,  横屏
} UIBarMetrics;

//设置在某个状态下segments的背景图片

[segment setTitleTextAttributes:dic forState:UIControlStateNormal];

NSString *const UITextAttributeFont;                       value: UIFont
NSString *const UITextAttributeTextColor;                 value: UIColor
NSString *const UITextAttributeTextShadowColor;       value: UIColor
NSString *const UITextAttributeTextShadowOffset;      value: NSValue wrapping a UIOffset
    
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],UITextAttributeTextColor,[UIFont fontWithName:@"SnellRoundhand-Bold" size:24],UITextAttributeFont ,nil];

//设置标题的颜色 字体和大小 阴影和阴影颜色

[segment addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged];

//当选中不同的segment时,会执行change:方法

 

 

UISegmentedControl分段控件代替了桌面OS上的单选按钮。不过它的选项个数非常有限,因为你的IOS设备屏幕有限。当我们需要使用选项非常少的单选按钮时它很合适。

一、创建

UISegmentedControl*mySegmentedControl = [[UISegmentedControlalloc]initWithItems:nil];

是不是很奇怪没有指定位置和大小呢?没错,我确实在他的类声明里只找到 initWithItems 而未找到 initWithFrame ,所以他不需要指定,不过我看到了另一个方法,这个方法可以设置Item的宽度:

  1. mySegmentedControl setWidth:100 forSegmentAtIndex:0];//设置Item的宽度

二、属性

  1. mySegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;//风格

可以视使用的场合,有三种风格选择,如下:

  1. typedef enum {
  2. UISegmentedControlStylePlain,     // large plain 有灰边的大白按钮,适合偏好设置单元
  3. UISegmentedControlStyleBordered,  // large bordered 黑边的大白按钮,适用于表格单元
  4. UISegmentedControlStyleBar,       // small button/nav bar style. tintable 小按钮,适合导航栏
  5. UISegmentedControlStyleBezeled,   // large bezeled style. tintable
  6. } UISegmentedControlStyle;

如果你使用的是 UISegmentedControlStyleBar 风格,还可以用空间的 tintColor 属性为整个控件设置渲染色彩:

  1. UIColor *myTint = [[ UIColor alloc]initWithRed:0.66 green:1.0 blue:0.77 alpha:1.0];
  2. mySegmentedControl.tintColor = myTint;

三、添加、删除片段

每个分段控件的片段都是一个按钮,其中包含一个标签或图片。你需要在你的控件中为每个控件创建一个片段。只要屏幕放得下,就可以有许多片段,但用户同一时刻只能选择一个片段。

  1. [mySegmentedControl insertSegmentWithTitle:@"First" atIndex:0 animated:YES];
  2. [mySegmentedControl insertSegmentWithTitle:@"Second" atIndex:2 animated:YES];

每个
按钮都被赋予一个索引,用这个索排序以及标识。
你也可以添加一个含有图像的片段,用inserSegmentWithImage

  1. [mySegmentedControl insertSegmentWithImage:[UIImage imageNamed:@"pic"]  atIndex:3 animated:YES];

删除片段

  1. [mySegmentedControl removeSegmentAtIndex:0 animated:YES];//删除一个片段
  2. [mySegmentedControl removeAllSegments];//删除所有片段

四、片段标题

  1. [mySegmentedControl setTitle:@"ZERO" forSegmentAtIndex:0];//设置标题
  2. NSString* myTitle = [mySegmentedControl titleForSegmentAtIndex:1];//读取标题

五、图像

每个分段也可以设置图像:

  1. [mySegmentedControl setImage:[UIImage imageNamed:@"pic"] forSegmentAtIndex:1];//设置
  2. UIImage* myImage = [mySegmentedControl imageForSegmentAtIndex:2];//读取

注意:图像不会自动调整大小,图片多大就会原生地显示多大,所以你要通知做图的美工大小要精确。
六、选中分段

分段控件的默认行为是,一旦按钮被选中就一直保持,直到另外一个按钮被选中为止。你可以改变这种默认的行为,变成按钮按下后很快就自动释放。将控件的momentary属性设为YES:

  1. mySegmentedControl.momentary = YES;

注意:开启这个功能后点触片段不会更新 selectedSegmentedIndex,因此也就无法通过这个属性得到当前选取的片段。

初始化默认片段

默认情况下,除非你指定,否则不会有任何片段被选中。要设置 selectedSegmentedIndex 属性:

  1. mySegmentedControl.selectedSegmentedIndex = 0;

七、显示控件

  1. [parentView addSubview:mySegmentedControl];//添加到父视图
  2. self.navigationItem.titleView = mySegmentedControl;//添加到导航栏

八、读取控件

通过 selectedSegmentedIndex 属性,可以读取当前选中分段的值,这个值就是选中片段的索引号。

  1. int x = mySegmentedControl. selectedSegmentedIndex;

九、通知

要接收片段选取的通知,可以用UIControl类的 addTarget 方法,为 UIControlEventValueChanged 事件添加一个动作:

  1. [mySegmentedControl addTarget:self action:@selector(selected:) forControlEvents:UIControlEventValueChanged];

只要选中了一个片段,你的动作方法就会被调用:

  1. -(void)selected:(id)sender{
  2. UISegmentedControl* control = (UISegmentedControl*)sender;
  3. switch (control.selectedSegmentIndex) {
  4. case 0:
  5. //
  6. break;
  7. case 1:
  8. //
  9. break;
  10. case 2:
  11. //
  12. break;
  13. default:
  14. break;
  15. }
  16. }

转载于:https://www.cnblogs.com/yujinzhong/p/5602670.html

ios UISegmentedControl的使用简介相关推荐

  1. IOS UISegmentedControl简介

    文章目录 常用属性和方法 使用,页面的切换 AppDelegate.m SubViewController.m颜色随机 MainViewController.m 在许多的应用程序中,开发者会加入一些主 ...

  2. 关于Facebook iOS UI 工具ComponentKit简介

    在 iOS 上面开发界面,需要创建视图.配置界面.视图分层等等很多步骤,也就不可避免的需要书写 N 多的代码.这还仅仅是界面设计,除此之外,完成 controllers 的回调.控制内部事务在界面上的 ...

  3. iOS UISegmentedControl

    In this tutorial, we'll be discussing and implementing the UISegmentedControl in our iOS Application ...

  4. iOS GitHub Top 100 简介

    GitHub Top 100 简介 主要对当前 GitHub 排名前 100 的项目做一个简单的简介, 方便初学者快速了解到当前 Objective-C 在 GitHub 的情况. Android 版 ...

  5. ios逆向工具MonkeyDev简介

    MonkeyDev简介 虽然是美国的苹果开发的操作系统,但是要论越狱iPhone和逆向分析来说,那国内远胜于米国了,可能是国内很多相关的灰色产业链吧.在之前,我们想动态调试一个没有源码的应用程序,通常 ...

  6. iOS之CAGradientLayer属性简介和使用

    1.CAGradientLayer简介 CAGradientLayer用于制作背景图层的颜色渐变,也就是颜色梯度!相关属性简介: #import <QuartzCore/CALayer.h> ...

  7. iOS持久化存储-CoreData简介

    本文目录 一.简介 二.模型文件 三.了解NSManagedObject对象 四.CoreData中的核心对象 五.代码实现 六.打开CoreData的SQL语句输出开关 七.创建NSManagedO ...

  8. iOS UISegmentedControl 的使用

    当用户输入不仅仅是布尔值时,可使用分段控件(UISegmentedControl).分段控件提供一栏按钮(有时称为按钮栏),但只能激活其中一个按钮.分段控件会导致用户在屏幕上看到的内容发生变化.它们常 ...

  9. iOS开发---开发工具简介

    成为一iOS程序开发者,首先需要一台运行Mac OS的电脑. Mac系统是 苹果机专用系统,是基于Unix 内核的图形化操作系统:一般情况下在普通 pc上无法安装的操作系统.由 苹果公司自行开发. 苹 ...

  10. iOS 加速计和陀螺仪 简介

    一.CoreMotion框架介绍 我们知道有一些iOS的应用,会有一些特殊的要求,比如: 1. 电子罗盘指南针之类的应用:让我们知道方向. 2. 运动类型软件:让我们知道我们跑步多少公里. 3. 社交 ...

最新文章

  1. .net内存回收与Dispose﹐Close﹐Finalize方法
  2. 双系统如何删除Linux
  3. 吴恩达推荐笔记:22 张图总结深度学习全部知识
  4. nyoj 715 Adjacent Bit Counts
  5. mysql 常用命令集_mysql 常用命令集锦[绝对精华]
  6. 优先队列(个人模版)
  7. 物联网python教程慕课_物联网小白入门
  8. Linux——JDK的部署
  9. Qt sqlit3的增、删、改、查、判断等基本操作接口
  10. GDI+中发生一般性错误 以及发布时候需要配置的文件
  11. php redis support,ThinkPHP5报错php not support: redis以及Redis的使用
  12. krpano漫游加方向性3D声音(这篇文章已被移到krpano中国网站 krpano360.com)
  13. iis 运行时错误_新手必看,17个常见的Python运行时错误
  14. 【数据集】BDD、KITTI、Cityscapes和Foggy Cityscapes百度云链接
  15. SharePoint 2007 做Migration中需要注意的一些问题
  16. ABBYY FineReader 15 PDF文档查看功能
  17. SAP ABAP Loop…Assigning与Loop…Into的比较
  18. win10系统电脑IP地址怎么查找,教程来啦,Windows10系统如何查找ip地址
  19. [源码解析] PyTorch 分布式之弹性训练(4)---Rendezvous 架构和逻辑
  20. Luogu3307:[SDOI2013]项链

热门文章

  1. STL源代码剖析——STL算法stl_algo.h
  2. 1、数据结构的基本逻辑结构、存储结构和运算
  3. JAVA代码查错试题集
  4. 华为培训视频-AAA培训
  5. [收藏] 将 DTS 用于业务智能解决方案的最佳实践
  6. ubuntu Mac 上ssh保持会话连接
  7. Flutter开发:在Flutter Plugin中引入aar——本地maven法
  8. 挑战性题目DSCT102:木板切割问题
  9. Luogu4198 楼房重建
  10. 洞穴辐射(radiation)