博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发基础控件--UISegmentedControl
阅读量:5291 次
发布时间:2019-06-14

本文共 5328 字,大约阅读时间需要 17 分钟。

         

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

          1.初始化UISegmentedControl

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

        3.分段控件点击事件:

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

        响应的事件:

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

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

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

转载于:https://www.cnblogs.com/songfeixiang/p/3733729.html

你可能感兴趣的文章
[重温数据结构]一种自平衡二叉查找树avl树的实现方法
查看>>
Java并发编程实战 第3章 对象的共享
查看>>
多线程系列(三):线程池基础
查看>>
【转载】数据库读写分离和垂直分库、水平分表
查看>>
String、StringBuffer和StringBuilder的区别
查看>>
mac terminal基本命令
查看>>
IntelliJ Idea 2017 免费激活方法
查看>>
Java适配器模式
查看>>
SetThreadAffinityMask 把线程限定在CPU上运行
查看>>
初学VUE2.0
查看>>
人不自控必自毁
查看>>
shiro配合html页面完成细粒化权限控制
查看>>
Java在线备份和还原MySQL数据库。
查看>>
useful commands for Mac / iOS
查看>>
nginx问题整理
查看>>
Python学习 day13
查看>>
Kerberos Ticket管理
查看>>
android如何实现文件按时间先后顺序排列显示
查看>>
ubuntu server 服务器部署(二) mysql 安装配置手记
查看>>
Xcode添加新字体
查看>>