分段控件是我们常用的控件之一,今天把具体用法总结了下:

1.初始化UISegmentedControl

[plain] view
plain
copy

  1. NSArray *segmentedArray = [[NSArray alloc]initWithObjects:@"1",@"2",@"3",nil];
  2. UISegmentedControl *segmentedTemp = [[UISegmentedControl alloc]initWithItems:segmentedArray];
  3. self.segmentedControl = segmentedTemp;
  4. segmentedControl.frame = CGRectMake(10.0, 10.0, 300.0, 29.0);
  5. 2.常用属性及设置方法如下:
  6. //设置指定索引的题目
  7. [segmentedControl setTitle:@"1" forSegmentAtIndex:1];
  8. //设置指定索引的图片
  9. [segmentedControl setImage:[UIImage imageNamed:@"home.png"] forSegmentAtIndex:2];
  10. //在指定索引插入一个选项并设置图片
  11. [segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"more.png"] atIndex:2 animated:NO];
  12. //在指定索引插入一个选项并设置题目
  13. [segmentedControl insertSegmentWithTitle:@"new" atIndex:3 animated:NO];
  14. //移除指定索引的选项
  15. [segmentedControl removeSegmentAtIndex:0 animated:NO];
  16. //设置指定索引选项的宽度
  17. [segmentedControl setWidth:60.0 forSegmentAtIndex:2];
  18. //设置选项中图片等的左上角的位置
  19. //[segmentedControl setContentOffset:CGSizeMake(10.0,10.0) forSegmentAtIndex:1];
  20. //设置默认选择项索引
  21. segmentedControl.selectedSegmentIndex = 2;
  22. //分段控件的颜色,只有样式为UISegmentedControlStyleBar的时候才有效果
  23. segmentedControl.tintColor = [UIColor redColor];
  24. //设置样式
  25. segmentedControl.segmentedControlStyle = UISegmentedControlStyleBordered;
  26. //设置在点击后是否恢复原样
  27. segmentedControl.momentary = NO;
  28. //设置指定索引选项不可选
  29. [segmentedControl setEnabled:NO forSegmentAtIndex:3];
  30. //判断指定索引选项是否可选
  31. BOOL enableFlag = [segmentedControl isEnabledForSegmentAtIndex:3];
  32. NSLog(@"%d",enableFlag);

3.分段控件点击事件:

[plain] view
plain
copy

  1. [segmentedControl addTarget:self
  2. action:@selector(segmentAction:)
  3. forControlEvents:UIControlEventValueChanged];

响应的事件:

[plain] view
plain
copy

  1. -(void)segmentAction:(UISegmentedControl *)Seg
  2. {
  3. NSInteger index = Seg.selectedSegmentIndex;
  4. switch (index) {
  5. case 0:
  6. NSLog(@"0 clicked.");
  7. break;
  8. case 1:
  9. NSLog(@"1 clicked.");
  10. break;
  11. case 2:
  12. NSLog(@"2 clicked.");
  13. break;
  14. case 3:
  15. NSLog(@"3 clicked.");
  16. break;
  17. case 4:
  18. NSLog(@"4 clicked.");
  19. break;
  20. default:
  21. break;
  22. }
  23. }

4.获取分段控件相应的值:

[plain] view
plain
copy

  1. //获取指定索引选项的图片imageForSegmentAtIndex:
  2. UIImageView *imageForSegmentAtIndex = [[UIImageView alloc]initWithImage:[segmentedControl imageForSegmentAtIndex:1]];
  3. imageForSegmentAtIndex.frame = CGRectMake(60.0, 100.0, 30.0, 30.0);
  4. //获取指定索引选项的标题titleForSegmentAtIndex
  5. UILabel *titleForSegmentAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(100.0, 100.0, 30.0, 30.0)];
  6. titleForSegmentAtIndex.text = [segmentedControl titleForSegmentAtIndex:0];
  7. //获取总选项数segmentedControl.numberOfSegments
  8. UILabel *numberOfSegments = [[UILabel alloc]initWithFrame:CGRectMake(140.0, 100.0, 30.0, 30.0)];
  9. numberOfSegments.text = [NSString stringWithFormat:@"%d",segmentedControl.numberOfSegments];
  10. //获取指定索引选项的宽度widthForSegmentAtIndex:
  11. UILabel *widthForSegmentAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(180.0, 100.0, 70.0, 30.0)];
  12. widthForSegmentAtIndex.text = [NSString stringWithFormat:@"%f",[segmentedControl widthForSegmentAtIndex:2]];

但是这样的分段控件只有固定的几种样式。在IOS5以后,可以全局的设置一些控件的外观,分段控件就是其中一个(全局设置UISegmentedControl外观):

[plain] view
plain
copy

  1. //cap insets用来指定哪些区域是固定不变的,未制定的区域则会repeat
  2. UIImage *segmentSelected = [[UIImage imageNamed:@"bg_o.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];
  3. UIImage *segmentUnselected = [[UIImage imageNamed:@"bg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];
  4. UIImage *segmentSelectedUnselected = [UIImage imageNamed:@"line.png"] ;
  5. UIImage *segUnselectedSelected = [UIImage imageNamed:@"line.png"] ;
  6. UIImage *segmentUnselectedUnselected = [UIImage imageNamed:@"line.png"];
  7. //Segmente未选中背景
  8. [[UISegmentedControl appearance] setBackgroundImage:segmentUnselected
  9. forState:UIControlStateNormal
  10. barMetrics:UIBarMetricsDefault];
  11. //Segmente选中背景
  12. [[UISegmentedControl appearance] setBackgroundImage:segmentSelected
  13. forState:UIControlStateSelected
  14. barMetrics:UIBarMetricsDefault];
  15. //Segmente左右都未选中时的分割线
  16. //BarMetrics表示navigation bar的状态,UIBarMetricsDefault 表示portrait状态(44pixel height),UIBarMetricsLandscapePhone 表示landscape状态(32pixel height)
  17. [[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected
  18. forLeftSegmentState:UIControlStateNormal
  19. rightSegmentState:UIControlStateNormal
  20. barMetrics:UIBarMetricsDefault];
  21. [[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected
  22. forLeftSegmentState:UIControlStateSelected
  23. rightSegmentState:UIControlStateNormal
  24. barMetrics:UIBarMetricsDefault];
  25. [[UISegmentedControl appearance] setDividerImage:segUnselectedSelected
  26. forLeftSegmentState:UIControlStateNormal
  27. rightSegmentState:UIControlStateSelected
  28. barMetrics:UIBarMetricsDefault];
  29. //字体
  30. NSDictionary *textAttibutesUnSelected = [NSDictionary dictionaryWithObjectsAndKeys:
  31. [UIFont systemFontOfSize:18],UITextAttributeFont,
  32. [UIColor blackColor],UITextAttributeTextColor,
  33. [UIColor whiteColor],UITextAttributeTextShadowColor,
  34. [NSValue valueWithCGSize:CGSizeMake(1, 1)],UITextAttributeTextShadowOffset,nil];
  35. NSDictionary *textAttibutesSelected = [NSDictionary dictionaryWithObjectsAndKeys:
  36. [UIFont systemFontOfSize:18],UITextAttributeFont,
  37. [UIColor whiteColor],UITextAttributeTextColor,
  38. [UIColor whiteColor],UITextAttributeTextShadowColor,
  39. [NSValue valueWithCGSize:CGSizeMake(0, 0)],UITextAttributeTextShadowOffset,nil];
  40. [[UISegmentedControl appearance] setTitleTextAttributes:textAttibutesUnSelected
  41. forState:UIControlStateNormal];
  42. [[UISegmentedControl appearance] setTitleTextAttributes:textAttibutesSelected
  43. forState:UIControlStateSelected];

iOS开发基础控件--UISegmentedControl的更多相关文章

  1. iOS开发基础控件--UIButton

    01 //这里创建一个圆角矩形的按钮 02     UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 03 ...

  2. iOS开发基础控件--UILabel

    UILabel 的常见属性和方法: //创建UIlabel对象 UILabel* label = [[UILabel alloc] initWithFrame:self.view.bounds]; / ...

  3. iOS开发基础控件--UITextField

    001 //初始化textfield并设置位置及大小 002   UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20 ...

  4. iOS:分段控件UISegmentedControl的详细使用

    分段控件:UISegmentedControl   功能:分段的控制.页面的切换等.   介绍:当用户输入不仅仅是布尔值时,可使用分段控件(UISegmentedControl).分段控件提供一栏按钮 ...

  5. IOS(一) 基础控件的介绍以及使用

    IOS的界面的制作,相对于Android来说 简洁了很多,虽然创建布局的方式都是两种(代码创建.布局文件) 但是Android中的xml布局文件在某些方面也属于代码创建,因为自己使用到得每一个属性 都 ...

  6. 【ios开发】控件细究1:UITableView

    工作了将近两个月,共接手两个项目,在项目中用的最多的就是UITableView了,但是也是问题出现的最多的地方,由于一开始不熟练,导致很多问题花了很长时间才解决.所以利用这两天空闲时间,好好梳理一下这 ...

  7. iOS开发-DatePicker控件

    时间控件不管是Android还是iOS中都是必然存在的一个控件,具体的效果大同小异,显示日期,时间,iOS中有四种方式可以选择,Time, Date,Date and Time  , Count Do ...

  8. IOS开发之控件篇UINavigationController第一章 - 介绍

    UINavigationController是一个比较常见的控件,它连接个视图,例如一个视图走到另外一个视图,之间的联系都可以用这个NavigationController的方法 一般都会由两个部分组 ...

  9. IOS开发之控件篇UICollectionViewControllor第一章 - 普通介绍

    1.介绍 UICollectionView和UICollectionViewControllor是IOS6.0后引入的新控件 使用UICollectionView必须实现三个接口: UICollect ...

随机推荐

  1. Roslyn 入门:使用 .NET Core 版本的 Roslyn 编译并执行跨平台的静态的源码

    Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性.以至于我们只需要编写很少量的代码便能够编译并执行我们的代码. 作为 Roslyn 入门篇文章之一,你将可以通过本文学习如何开始编写一 ...

  2. python之json扩展

    #!/usr/bin/env python # -*- coding: utf8 -*- # __Author: "Skiler Hao" # date: 2017/4/9 15: ...

  3. 相对导入中Attempted relative import in non-package问题

    这一篇应该是解释的比较清楚: http://stackoverflow.com/questions/14664313/attempted-relative-import-in-non-package- ...

  4. dict 没有 key 的情况

    如何处理, 请参考下文,  主要是要理解思路, https://www.polarxiong.com/archives/Python-%E6%93%8D%E4%BD%9Cdict%E6%97%B6%E ...

  5. Git 的分支和标签规则

    Git 的分支和标签规则 分支使用 x.x 命名,不加 V. 标签使用 v1.x.x-xxx 方式命名.(v 为小写) 分支和标签名不可重复.

  6. 最近项目和java对接,涉及到java的DESede加解密算法

    google后找到这个作者的一篇博客,搬过来用 http://hersface.com/page/17.html <?php class DESede{ /** * 加密 * @param $d ...

  7. sed命令n,N,d,D,p,P,h,H,g,G,x解析

    1.sed执行模板=sed '模式{命令1;命令2}'即逐行读入模式空间,执行命令,最后输出打印出来2.为方便下面,先说下p和P,p打印当前模式空间内容,追加到默认输出之后,P打印当前模式空间开端至\ ...

  8. 系统管理员都要知道的 30 个 Linux 系统监控工具

    1. top - 进程活动监控命令 top 命令会显示 Linux 的进程.它提供了一个运行中系统的实时动态视图,即实际的进程活动.默认情况下,它显示在服务器上运行的 CPU 占用率最高的任务,并且每 ...

  9. php通过Mysqli和PDO连接mysql数据详解

    前言 在实际开发中,关于数据库操作类,很少是自己去写,大多是通过一些框架去实现,突然自己去写,还是需要借阅手册之类,于是我觉得有必要去总结一下,php连接mysql的方法,php连接mysql,可以通 ...

  10. m'ybatis 一对一 一对多 配置详解

    javabean: package com.me.model; import java.io.Serializable; import java.util.Date; import java.util ...