今天我们来说下iOS中的分段选择控制器UISegmentedControl,这一控件有什么作用呢

  • 每个segment都能被点击,相当于集成了多个button
  • 通常我们会点击不同的segment来切换不同的view

那么它实现了一个什么效果呢,我们先看下图:

这就是我们实现的效果,这里家具、灯饰等等每一项就是一个按钮,点击会触发不同事件或跳转到不同页面

那么怎么实现这一效果能,只需要简单几句代码:

//先生成存放标题的数据
NSArray *array = [NSArray arrayWithObjects:@"家具",@"灯饰",@"建材",@"装饰", nil];
//初始化UISegmentedControl
UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:array];
//设置frame
segment.frame = CGRectMake(10, 100, self.view.frame.size.width-20, 30);
//添加到视图
[self.view addSubview:segment];

这样一个简单的分段控制器就生成了,这样还不能使用,我们实际开发中需要根据它的属性去进一步设置.

UISegmentedControl属性设置

在segment生成后我们可以根据需求在任意位置插入或删除内容

//添加一个分段(在指定下标下插入,并设置动画效果)
[segment insertSegmentWithTitle:@"五金电料" atIndex:2 animated:NO];
//插入图片分段
//[segment insertSegmentWithImage:[UIImage imageNamed:@"需要插入图片的名字"] atIndex:2 animated:YES];
//移除一个分段(根据下标)
//[segme removeSegmentAtIndex:0 animated:YES];

插入标题效果

我们还可以设置其他属性

//根据下标修改分段标题(修改下标为2的分段)
[segme setTitle:@"巧克力" forSegmentAtIndex:2];
//根据内容定分段宽度
segme.apportionsSegmentWidthsByContent = YES;
//开始时默认选中下标(第一个下标默认是0)
segme.selectedSegmentIndex = 2;
//控件渲染色(也就是外观字体颜色)
segment.tintColor = [UIColor redColor];
//按下是否会自动释放:
//segment.momentary = YES;

实现的效果

除了以上属性,我们也可以设置每一个分段的属性

 // 设置指定索引选项的宽度(设置下标为2的分段宽度)
[segment setWidth:70.0 forSegmentAtIndex:2];
// 设置分段中标题的位置(0,0点为中心)
[segment setContentOffset:CGSizeMake(10,10) forSegmentAtIndex:3];

修改后的效果

当然最重要的是我们要给segment添加事件

 //添加事件
[segme addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged];

实现添加的事件

//点击不同分段就会有不同的事件进行相应
-(void)change:(UISegmentedControl *)sender{
NSLog(@"测试");
if (sender.selectedSegmentIndex == 0) {
NSLog(@"1");
}else if (sender.selectedSegmentIndex == 1){
NSLog(@"2");
}else if (sender.selectedSegmentIndex == 2){
NSLog(@"3");
}else if (sender.selectedSegmentIndex == 3){
NSLog(@"4");
}

如果开发中有需求,我们可以让其在导航栏显示,只需要我们稍微改变下添加到视图的方法

//显示在导航栏上
self.navigationItem.titleView = segmentedControl;

在导航栏实现的效果

这只是我个人总结的UISegmentedControl的一些简单使用方法,如果有什么问题,还希望大家积极指出,共同进步,谢谢.

文/呼噜ZR(简书作者)
原文链接:http://www.jianshu.com/p/7d9e4d4368c8
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

iOS开发之分段控制器(UISegmentedControl)的更多相关文章

  1. UISegmentedControl字体大小,颜色,选中颜色,左边椭圆,右边直线的Button 解决之iOS开发之分段控制器UISegmentedControl

        NSArray *segmentedArray = [NSArrayarrayWithObjects:STR(@"Mynews"),STR(@"Systemmes ...

  2. iOS开发UI篇—控制器的创建

    iOS开发UI篇—控制器的创建 说明:控制器有三种创建方式,下面一一进行说明. 一.第一种创建方式(使用代码直接创建) 1.创建一个空的IOS项目. 2.为项目添加一个控制器类. 3.直接在代理方法中 ...

  3. iOS开发UI篇—控制器的View的创建

    iOS开发UI篇—控制器的View的创建 一.6种创建控制器View的方式 #import "NJAppDelegate.h" #import "NJViewContro ...

  4. iOS开发中视图控制器ViewControllers之间的数据传递

    iOS开发中视图控制器ViewControllers之间的数据传递 这里我们用一个demo来说明ios是如何在视图控制器之间传递重要的参数的.本文先从手写UI来讨论,在下一篇文章中讨论在storybo ...

  5. 分段控制器UISegmentedControl的使用、同一个控制器中实现多个View的切换、addChildViewController等方法的使用

    本文先讲解简单的分段控制器UISegmentedControl的使用,然后具体讲解它最常使用的场景:同一个控制器中实现多个View的切换. 文章构思: 1.先直接讲解一张UI效果图的四种实现方式. 2 ...

  6. iOS开发UINavigation——导航控制器UINavigationController

    iOS开发UINavigation系列一——导航栏UINavigtionBar摘要iOS中的导航条可以附着于导航控制器之中使用,也可以在controller中单独使用,这篇博客,主要讨论有关导航栏的使 ...

  7. iOS开发——UI基础-控制器,IBAction和IBOutlet,UIView

    第一个ios程序 @interface ViewController : UIViewController @property(nonatomic, weak)IBOutlet UILabel *la ...

  8. 分段控制器--UISegmentedControl 基本用法

    http://blog.csdn.net/heng615975867/article/details/43527295 http://blog.csdn.net/gf771115/article/de ...

  9. iOS开发基础控件--UISegmentedControl

    UISegmentedControl全局外观设置 分段控件是我们常用的控件之一,今天把具体用法总结了下: 1.初始化UISegmentedControl [plain] view plaincopy ...

随机推荐

  1. 十分钟了解HTTPS协议

    概念 HTTP协议上添加一层SSL/TLS协议进行加密,保证用户与web站点之间的数据传输时密文,而不是明文. PS:HTTPS协议 = HTTP协议 + SSL(Secure Sockets Lay ...

  2. Unity3D - UGUI组件的中英文对照

  3. BZOJ 3489 A simple rmq problem ——KD-Tree

    考前写写板子. 用$(i,pre[i],nxt[i])$来描述一个点,然后就变成了区间求最值的问题. KD-Tree 由低维转向高维的方法,可以用来敲暴力. 剩下就是KD-Tree的基本操作了. #i ...

  4. [CODEVS1911] 孤岛营救问题(分层图最短路)

    传送门 吐槽:神tm网络流... 用持有的钥匙分层,状态压缩,用 2 进制表示持有的钥匙集合. dis[i][j][k] 表示持有的钥匙集合为 k,到达点 (i, j) 的最短路径. 分层图的最短路听 ...

  5. [luoguP2526] [SHOI2001]小狗散步(二分图最大匹配)

    传送门 简直就是模板题啊! #include <cmath> #include <cstdio> #include <cstring> #include <i ...

  6. SG函数 与 ICG问题

    ICG ICG(Impartial Combinatorial Games)游戏是组合游戏(Combinatorial Games)的一类 满足如下性质: ①有两名玩家 ②两名玩家轮流操作,在一个有限 ...

  7. docker (centOS 7) 使用笔记1

    1. docker配置 初次在安装完docker后,初始化配置 copy默认的docker.service后,重启服务,会在/etc/systemd/system/multi-user.target. ...

  8. 巧克力(zoj 1363)

    2100年,ACM牌巧克力将风靡全球. “绿的,橘红的,棕色的,红的…”,彩色的糖衣可能是ACM巧克力最吸引人的地方.你一共见过多少种颜色?现在,据说ACM公司从一个24种颜色的调色板中选择颜色来装饰 ...

  9. javascript事件捕获机制,dom tree

    $(document,"a").on("click",function(){alert(2);return false;}); $("<a> ...

  10. Introduction to the WinPcap Networking Libraries

    Introduction to the WinPcap Networking Libraries use wire shark or fiddler