今天我们来说下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. fzu1759 Super A^B mod C 扩展欧拉定理降幂

    扩展欧拉定理: \[ a^x \equiv a^{x\mathrm{\ mod\ }\varphi(p) + x \geq \varphi(p) ? \varphi(p) : 0}(\mathrm{\ ...

  2. mac常用软件,自用找了很久的分享一下相信很多人需要

    CleanMyMac 3.1.1.dmg比较好用的清理软件.破解版!http://pan.baidu.com/s/1i4mo7jvNTFS读写 Tuxera NTFS for Mac.rar也是破解的 ...

  3. 25、Base64

    Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3 ...

  4. [POJ 1003] Hangover C++解题

        Hangover Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 95164   Accepted: 46128 De ...

  5. 大数据学习——akka学习

    架构图 重要类介绍 ActorSystem 在Akka中,ActorSystem是一个重量级的结构,他需要分配多个线程,所以在实际应用中,ActorSystem通常是一个单例对象,我们可以使用这个Ac ...

  6. Django中间件、Auth认证

    中间件 一:什么是中间件 是介于request与response处理之间的一道处理过程 二:中间件的作用 如果你想修改请求,例如被传送到view中的HttpRequest对象. 或者你想修改view返 ...

  7. POJ——1321棋盘问题(DFS+回溯)

    棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 33272 Accepted: 16456 Description 在一 ...

  8. [SPOJ-PT07J] Query on tree III (主席树)

    题意翻译 你被给定一棵带点权的n个点的有根数,点从1到n编号. 定义查询 query(x,k): 寻找以x为根的k大点的编号(从小到大排序第k个点) 假设没有两个相同的点权. 输入格式: 第一行为整数 ...

  9. PHP中的验证码类(验证码功能设计之一)

    <!--vcode.class.php内容--> <?php class Vcode { private $width; //宽 private $height; //高 priva ...

  10. 【CF1017A】The Rank(签到)

    题意:给定n个人的4门课成绩,排名按总分,保证总分互不相同,求1号名次 n<=1e3,a[i],b[i],c[i],d[i]<=1e2 思路: #include<cstdio> ...