UIControl类控件(一)

来源:互联网 发布:p身份证的软件 编辑:程序博客网 时间:2024/06/10 02:57


转载注明出处
 : http://blog.csdn.net/shulianghan/article/details/50348982





一. 日期选择器 (UIDatePicker)


UIDatePicker 属性截图 : 




1. UIDatePicker 控件属性



(1) Mode 属性 


Mode 属性 : 用于设置 UIDatePicker 模式;

-- Date 属性值 : 显示日期, 不显示时间;

-- Time 属性值 : 显示时间, 不显示日期;

-- Date and Time 属性值 : 同时显示日期 和 时间;

-- Count Down Timer 属性值 : 显示倒计时器;



(2) Local 属性 


Local 属性值 : 国际化设置相关属性, 通常使用默认的设置即可;



(3) Interval 属性 


Interval 属性值 : 设置两个时间选项的时间间隔, 仅当采用 Time, Date and Time, Count Down Timer 三个属性时有效;



(4) Constraints 属性 


Constraints 属性 : 设置控件的最小时间 和 最大时间;



(5) Timer 属性 


Timer 属性 :  设置倒计时 的计时秒数, 只有采用 Count Down Timer 模式时有效;




2. UIDatePicker 日期选择器 示例代码



代码示例 : 

-- 界面设计文件 : 


-- OCViewController.h : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.h  
  3. //  UIDatePicker  
  4. //  
  5. //  Created by octopus on 15-12-19.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import <UIKit/UIKit.h>  
  10.   
  11. @interface OCViewController : UIViewController  
  12. @property (strongnonatomic) IBOutlet UIDatePicker *datePicker;  
  13. - (IBAction)click:(id)sender;  
  14.   
  15. @end  


-- OCViewController.m 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.m  
  3. //  UIDatePicker  
  4. //  
  5. //  Created by octopus on 15-12-19.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import "OCViewController.h"  
  10.   
  11. @interface OCViewController ()  
  12.   
  13. @end  
  14.   
  15. @implementation OCViewController  
  16.   
  17. - (void)viewDidLoad  
  18. {  
  19.     [super viewDidLoad];  
  20.     // Do any additional setup after loading the view, typically from a nib.  
  21. }  
  22.   
  23. - (void)didReceiveMemoryWarning  
  24. {  
  25.     [super didReceiveMemoryWarning];  
  26.     // Dispose of any resources that can be recreated.  
  27. }  
  28.   
  29. - (IBAction)click:(id)sender {  
  30.     //从 UIdatePicker 中获取事件  
  31.     NSDate * date = [self.datePicker date];  
  32.     //创建 Date 格式化工具  
  33.     NSDateFormatter * formatter = [[NSDateFormatter alloc] init];  
  34.     //格式日期格式化格式  
  35.     [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];  
  36.     //将日期转为格式化好的字符串  
  37.     NSString * dateString = [formatter stringFromDate:date];  
  38.     //创建 警告对话框  
  39.     NSString * message = [NSString stringWithFormat:@"UIDatePicker 被选中的时间是 %@", dateString];  
  40.     UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"时间选择" message:message delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil nil];  
  41.     //显示警告对话框  
  42.     [alertView show];  
  43. }  
  44. @end  


-- 界面运行效果 : 




3. UIDatePicker 计时器 示例代码



计时器示例代码 : 

-- 界面设计文件 : 


-- OCViewController.h : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.h  
  3. //  UIDatePicker  
  4. //  
  5. //  Created by octopus on 15-12-19.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import <UIKit/UIKit.h>  
  10.   
  11. @interface OCViewController : UIViewController  
  12. //日期选择器  
  13. @property (strongnonatomic) IBOutlet UIDatePicker *datePicker;  
  14. //计时器  
  15. @property (strongnonatomic) IBOutlet UIDatePicker *countDown;  
  16. //计时器按钮控件  
  17. @property (strongnonatomic) IBOutlet UIButton *countDownBt;  
  18. //日期选择器下的按钮方法  
  19. - (IBAction)click:(id)sender;  
  20. //计时器下的按钮方法  
  21. - (IBAction)clickCountDown:(id)sender;  
  22.   
  23. @end  


-- OCViewController.m : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.m  
  3. //  UIDatePicker  
  4. //  
  5. //  Created by octopus on 15-12-19.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import "OCViewController.h"  
  10.   
  11. @interface OCViewController ()  
  12.   
  13. @end  
  14.   
  15. @implementation OCViewController  
  16.   
  17. NSTimer * timer;  
  18. NSInteger second;  
  19.   
  20. - (void)viewDidLoad  
  21. {  
  22.     [super viewDidLoad];  
  23.     // Do any additional setup after loading the view, typically from a nib.  
  24.       
  25.     //设置 UIDatePicker 模式为 计时器模式  
  26.     self.countDown.datePickerMode = UIDatePickerModeCountDownTimer;  
  27. }  
  28.   
  29. - (void)didReceiveMemoryWarning  
  30. {  
  31.     [super didReceiveMemoryWarning];  
  32.     // Dispose of any resources that can be recreated.  
  33. }  
  34.   
  35. - (IBAction)click:(id)sender {  
  36.     //从 UIdatePicker 中获取事件  
  37.     NSDate * date = [self.datePicker date];  
  38.     //创建 Date 格式化工具  
  39.     NSDateFormatter * formatter = [[NSDateFormatter alloc] init];  
  40.     //格式日期格式化格式  
  41.     [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];  
  42.     //将日期转为格式化好的字符串  
  43.     NSString * dateString = [formatter stringFromDate:date];  
  44.     //创建 警告对话框  
  45.     NSString * message = [NSString stringWithFormat:@"UIDatePicker 被选中的时间是 %@", dateString];  
  46.     UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"时间选择" message:message delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil nil];  
  47.     //显示警告对话框  
  48.     [alertView show];  
  49. }  
  50.   
  51. - (IBAction)clickCountDown:(id)sender {  
  52.     NSLog(@"点击了 clickCountDown");  
  53.     //获取倒计时剩余时间  
  54.     second = self.countDown.countDownDuration;  
  55.     //设置 UIDatePicker 和 倒计时按钮 禁用状态  
  56.     self.countDown.enabled = NO;  
  57.     [sender setEnabled:NO];  
  58.     //生成当前秒数 字符串  
  59.     NSString * message = [NSString stringWithFormat:@"倒计时 剩余 %d", second];  
  60.     //创建警告框  
  61.     UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"倒计时" message:message delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil nil];  
  62.     //显示警告框  
  63.     [alert show];  
  64.     //启动定时器, 每隔 1 秒调用一次  
  65.     timer = [NSTimer scheduledTimerWithTimeInterval:60 target:self selector:@selector(tick) userInfo:nil repeats:YES];  
  66. }  
  67.   
  68. -(void) tick{  
  69.     //秒数 减去 60  
  70.     second = second - 60;  
  71.     //将自减后的秒数设置给 UIDatePicker  
  72.     self.countDown.countDownDuration = second;  
  73.     //如果倒计时完毕, 控件 恢复正常  
  74.     if(second <= 0){  
  75.         [timer invalidate];  
  76.         self.countDown.enabled = YES;  
  77.         self.countDownBt.enabled = YES;  
  78.     }  
  79. }  
  80. @end  


-- 界面运行展示 : 






二. 选择器 (UIPickerView)




1. UIPickerView 简介



(1) UIPickerView 继承结构 


UIPickerView 继承结构 : 

-- 父类 : 继承 UIView, 不继承 UIControl;

-- 处理方法 : 该类不能绑定 IBAction 处理方法, 其事件处理只能交给对应的委托对象的委托方法完成;



(2) UIPickerView 属性


UIPickerView 属性 : 


-- Shows Selection Indicator 属性 : 是否高亮显示选中的选项;



(3) UIPickerView 行列属性读取方法


UIPickerView 行列属性读取方法 : 

-- "numberOfComponents" 方法 : 获取 UIPickerView 中的可选的列表的选项个数;

-- "numberOfRowsInComponent" 方法 : 获取 列 数;

-- "rowSizeForComputer" 方法 : 获取指定列的 选项个数, 返回值是 CGSize 类型;

-- "selectRow : inComponent : animated" 方法 : 选中 某一列 的 某个 选项, 并设置是否使用动画;

-- "viewForRow : forComponent" 方法 : 返回指定选项使用的 控件;



(4) UIPickerViewDataSource 数据管理


UIPickerViewDataSource 数据设置方法 : 

-- 设置数据 : UIPickerView 对象可以设置一个 UIPickerViewDataSource 对象, 用于数据管理;

-- "numberOfComponentsInPickerView" 方法 : 判断包含多少列;

-- "pickerView : numberOfRowsInComponent : " 方法 : 指定某一列应该包含多少个选项;



(5) UIPickerViewDelegate 管理 外观 和 响应


UIPickerViewDelegate 简介 : 

-- CGFloat 类型 : 32 位机器上是 float 类型, 64 位机器上是 double 类型;

[objc] view plaincopy
  1. typedef float CGFloat;// 32-bit  
  2. typedef double CGFloat;// 64-bit  
  3.   
  4. struct CGPoint {  
  5.     CGFloat x;  
  6.     CGFloat y;  
  7. };  

-- 主要作用 : 为 UIPickerView 设置 UIPickerViewDelegate 委托对象, 用于管理 UIPickerView 外观, 用于响应 UIPickerView 的选中事件;

-- "pickerView : rowHeightForComponent" 方法 : 返回 UIPickerView 指定选项的高度, 类型 CGFloat;

-- "pickerView : widthForComponent" 方法 : 返回 UIPickerView 指定选项的宽度, 类型 CGFloat;

-- "pickerView : tittleForRow : forComponent" 方法 : 返回指定列, 指定选项的标题, 类型 NSString;

-- "pickerView : viewForRow : forComponent : reusingView" 方法 : 返回 UIView 控件, 该控件是指定列 的 指定选项控件;

-- "pickerView : didSelectRow : inComponent" 方法 : 选定 UIPickerView 指定列的指定列表项 会回调该方法;  




2. 单行选择器示例


(1) 相关 API 简介


相关 API 简介 

-- 为 UIPickerView 设置 数据 和 操作 委托 : 

[objc] view plaincopy
  1. //为 UIPickerView 设置 UIPickerViewDataSource 委托  
  2. self.pickerView.dataSource = self;  
  3.   
  4. //为 UIPickerView 设置 UIPickerViewDelegate 委托  
  5. self.pickerView.delegate = self;  

-- 设置 UIPickerView 列数 : 该方法是 UIPickerViewDataSource 委托方法;

[objc] view plaincopy
  1. //UIPickerViewDataSource 委托中定义的方法, 返回 UIPickerView 包含多少列  
  2. - (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView{  
  3.     return 1;  
  4. }  

-- 设置 UIPickerView 某列对应选项个数 : 该方法是 UIPickerViewDataSource 委托方法;

[objc] view plaincopy
  1. //UIPickerViewDataSource 委托方法, 获取指定列 有多少个选项数据  
  2. - (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{  
  3.     /* 
  4.         component 是列的索引 
  5.      */  
  6.     return array.count;  
  7. }  

-- 设置 UIPickerView 选项返回的字符串值 : 该方法是 UIPickerViewDelegate 委托方法;

[objc] view plaincopy
  1. /* 
  2.     UIPickerViewDelegate 委托方法, 该方法返回指定列的 指定 选项 的值 
  3.     row 参数 : 行 索引 
  4.     component 参数 : 列 索引, 由于 只有一列, 因此我们不必关系 该索引, 只需要关心 行 索引即可 
  5.  */  
  6. - (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{  
  7.     return [array objectAtIndex:row];  
  8. }  

-- 设置 UIPickerView 选中选项方法 : 该方法是 UIPickerViewDelegate 委托方法;

[objc] view plaincopy
  1. /* 
  2.     UIPickerViewDelegate 委托方法, 当选中某个选项时 激发的方法 
  3.     row 参数 : 选中选项所在的列的索引 
  4.     component 参数 : 选中选项所在的行的索引 
  5.  */  
  6. - (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{  
  7.     // 生成对话框, 在对话框中显示选中的内容  
  8.     UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"UIPickerView 提示" message:[NSString stringWithFormat : @"UIPickerView 选中选项是 : %@", [array objectAtIndex : row]] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil nil];  
  9.     //显示对话框  
  10.     [alert show];  
  11. }  


(2) 单行选择器代码示例


单行选择器代码示例 : 

-- 界面设计文件 : 


-- OCViewController.h : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.h  
  3. //  UIPickerView  
  4. //  
  5. //  Created by octopus on 15-12-21.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import <UIKit/UIKit.h>  
  10.   
  11. @interface OCViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>  
  12.   
  13. // UIPIckerView 的 IBOutlet 引用  
  14. @property (strongnonatomic) IBOutlet UIPickerView *pickerView;  
  15.   
  16. @end  


-- OCViewController.m : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.m  
  3. //  UIPickerView  
  4. //  
  5. //  Created by octopus on 15-12-21.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import "OCViewController.h"  
  10.   
  11. @interface OCViewController ()  
  12.   
  13. @end  
  14.   
  15. @implementation OCViewController  
  16.   
  17. NSArray * array;  
  18.   
  19. - (void)viewDidLoad  
  20. {  
  21.     [super viewDidLoad];  
  22.     // Do any additional setup after loading the view, typically from a nib.  
  23.       
  24.     //创建 UIPickerView 列表中显示的字符串集合  
  25.     array = [NSArray arrayWithObjects:@"知春路"@"五道口"@"上地"@"西二旗"@"龙泽"@"回龙观", nil nil];  
  26.       
  27.     //为 UIPickerView 设置 UIPickerViewDataSource 委托  
  28.     self.pickerView.dataSource = self;  
  29.       
  30.     //为 UIPickerView 设置 UIPickerViewDelegate 委托  
  31.     self.pickerView.delegate = self;  
  32.   
  33. }  
  34.   
  35. //UIPickerViewDataSource 委托中定义的方法, 返回 UIPickerView 包含多少列  
  36. - (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView{  
  37.     return 1;  
  38. }  
  39.   
  40. //UIPickerViewDataSource 委托方法, 获取指定列 有多少个选项数据  
  41. - (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{  
  42.     /* 
  43.         component 是列的索引 
  44.      */  
  45.     return array.count;  
  46. }  
  47.   
  48. /* 
  49.     UIPickerViewDelegate 委托方法, 该方法返回指定列的 指定 选项 的值 
  50.     row 参数 : 行 索引 
  51.     component 参数 : 列 索引, 由于 只有一列, 因此我们不必关系 该索引, 只需要关心 行 索引即可 
  52.  */  
  53. - (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{  
  54.     return [array objectAtIndex:row];  
  55. }  
  56.   
  57. /* 
  58.     UIPickerViewDelegate 委托方法, 当选中某个选项时 激发的方法 
  59.     row 参数 : 选中选项所在的列的索引 
  60.     component 参数 : 选中选项所在的行的索引 
  61.  */  
  62. - (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{  
  63.     // 生成对话框, 在对话框中显示选中的内容  
  64.     UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"UIPickerView 提示" message:[NSString stringWithFormat : @"UIPickerView 选中选项是 : %@", [array objectAtIndex : row]] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil nil];  
  65.     //显示对话框  
  66.     [alert show];  
  67. }  
  68.   
  69. - (void)didReceiveMemoryWarning  
  70. {  
  71.     [super didReceiveMemoryWarning];  
  72.     // Dispose of any resources that can be recreated.  
  73. }  
  74.   
  75. - (void) valueChange{  
  76. }  
  77.   
  78. @end  



-- 运行效果展示 : 





3. 多行列表选择器示例代码



(1) 示例代码


多行列表选择示例代码 : 

-- 界面设计文件 : 


-- OCViewController.h : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.h  
  3. //  MultiUIPickerView  
  4. //  
  5. //  Created by octopus on 15-12-23.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import <UIKit/UIKit.h>  
  10.   
  11. /* 
  12.     实现 UIPickerViewDelegate 和 UIPickerViewDataSource 两个协议 
  13.  */  
  14. @interface OCViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource>  
  15. @property (strongnonatomic) IBOutlet UIPickerView *pickerView;  
  16.   
  17. @end  


-- OCViewController.m 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.m  
  3. //  MultiUIPickerView  
  4. //  
  5. //  Created by octopus on 15-12-23.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import "OCViewController.h"  
  10.   
  11. @interface OCViewController ()  
  12.   
  13. @end  
  14.   
  15. @implementation OCViewController  
  16.   
  17. //用于存储数据源  
  18. NSArray * line13;  
  19. NSArray * line1;  
  20.   
  21. //分别存储当前数据源中的索引  
  22. NSInteger line1_row;  
  23. NSInteger line13_row;  
  24.   
  25. - (void)viewDidLoad  
  26. {  
  27.     [super viewDidLoad];  
  28.     // Do any additional setup after loading the view, typically from a nib.  
  29.       
  30.     line13 = [NSArray arrayWithObjects:@"西直门"@"大钟寺"@"知春路"@"五道口"@"上地"@"西二旗", nil nil];  
  31.     line1 = [NSArray arrayWithObjects:@"八宝山"@"五棵松"@"八角游乐园"@"苹果园"@"万寿路"@"公主坟", nil nil];  
  32.       
  33.     self.pickerView.dataSource = self;  
  34.     self.pickerView.delegate = self;  
  35. }  
  36.   
  37. //UIPickerViewDataSource 委托方法, 设定 UIPickerView 列数  
  38. - (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView{  
  39.     return 2;  
  40. }  
  41.   
  42. //UIPickerViewDataSource 委托方法, 设置每一列的选项个数  
  43. - (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{  
  44.     NSInteger count;  
  45.       
  46.     switch (component) {  
  47.         case 0:  
  48.             count = line13.count;  
  49.             break;  
  50.         case 1:  
  51.             count = line1.count;  
  52.             break;  
  53.         default:  
  54.             count = 0;  
  55.             break;  
  56.     }  
  57.       
  58.     return count;  
  59. }  
  60.   
  61. //UIPickerViewDelegate 委托方法, 设置每个选项的显示的字符串标题  
  62. - (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{  
  63.     NSString * tittle;  
  64.     switch (component) {  
  65.         case 0:  
  66.             tittle = [line13 objectAtIndex:row];  
  67.             break;  
  68.         case 1:  
  69.             tittle = [line1 objectAtIndex:row];  
  70.             break;  
  71.         default:  
  72.             tittle = nil;  
  73.             break;  
  74.     }  
  75.       
  76.     return tittle;  
  77. }  
  78.   
  79. //UIPickerViewDelegate 委托方法, 设置选中回调方法  
  80. -(void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{  
  81.       
  82.     //设置当前获取的 行列 值, 并存储到类变量中  
  83.     if(component == 0){  
  84.         line13_row = row;  
  85.     }else if(component == 1){  
  86.         line1_row = row;  
  87.     }  
  88.       
  89.     //生成对话框中显示的字符串  
  90.     NSString * message = [NSString stringWithFormat:@"选中内容 一号线 %@, 十三号线 %@", [line1 objectAtIndex:line1_row], [line13 objectAtIndex:line13_row]];  
  91.       
  92.     //生成  
  93.     UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"UIPickerView 多行选择" message:message delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil nil];  
  94.       
  95.     [alertView show];  
  96. }  
  97.   
  98. //指定 UIPickerView 的选项宽度  
  99. - (CGFloat) pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{  
  100.     CGFloat width;  
  101.     switch (component) {  
  102.         case 0:  
  103.             width = 100;  
  104.             break;  
  105.         case 1:  
  106.             width = 150;  
  107.             break;  
  108.               
  109.         default:  
  110.             break;  
  111.     }  
  112.       
  113.     return width;  
  114. }  
  115.   
  116.   
  117.   
  118.   
  119. - (void)didReceiveMemoryWarning  
  120. {  
  121.     [super didReceiveMemoryWarning];  
  122.     // Dispose of any resources that can be recreated.  
  123. }  
  124.   
  125. @end  


-- 运行效果 : 





4. 相关联的多行列表选择器示例代码



(1) 相关 API 简介


相关 API 简介 : 

-- 实现 UIPickerView 委托协议 : 

[objc] view plaincopy
  1. @interface OCViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>  

-- 设置 UIPickerView 委托 : 

[objc] view plaincopy
  1. //设置委托  
  2. self.pickerView.dataSource = self;  
  3. self.pickerView.delegate = self;  


-- UIPickerView 重新加载某一列 : 

[objc] view plaincopy
  1. //重新加载 第二列  
  2. [self.pickerView reloadComponent:1];  

-- UIPickerView 设置默认选项 : 

[objc] view plaincopy
  1. //设置第二列的默认选中, 一旦切换键值, 第二列默认选中 第一个选项  
  2. [self.pickerView selectRow:0 inComponent:1 animated:YES];  


转载注明出处 : http://blog.csdn.net/shulianghan/article/details/50348982



(2) 关联多项 UIPickerView 示例代码


示例代码 : 

-- 解析 : 在 API 内部是没有定义关联逻辑的, 关联逻辑是开发者自己使用逻辑实现的, 与上面的示例代码没有本质区别, 使用的还是相同的一套 API;

-- 界面设计文件 : 


-- OCViewController.h : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.h  
  3. //  CertainMultiPickerView  
  4. //  
  5. //  Created by octopus on 15-12-23.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import <UIKit/UIKit.h>  
  10.   
  11. @interface OCViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>  
  12. @property (strongnonatomic) IBOutlet UIPickerView *pickerView;  
  13. @end  


-- OCViewController.m : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.m  
  3. //  CertainMultiPickerView  
  4. //  
  5. //  Created by octopus on 15-12-23.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import "OCViewController.h"  
  10.   
  11. @interface OCViewController ()  
  12.   
  13. @end  
  14.   
  15. @implementation OCViewController  
  16.   
  17. NSDictionary * dictionary;  
  18. NSArray * rails;  
  19. NSInteger selectedRail;  
  20.   
  21. - (void)viewDidLoad  
  22. {  
  23.     [super viewDidLoad];  
  24.     // Do any additional setup after loading the view, typically from a nib.  
  25.       
  26.     //数据源  
  27.     dictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSArray arrayWithObjects:@"知春路"@"五道口"@"西二旗"@"龙泽", nil nil], @"十三号线", [NSArray arrayWithObjects : @"五棵松"@"八宝山",@"八角游乐园"@"苹果园", nil nil], @"一号线" , nil nil];  
  28.       
  29.     //获取键值集合  
  30.     rails = [dictionary allKeys];  
  31.       
  32.     //当前显示的键值  
  33.     selectedRail = 0;  
  34.       
  35.     //设置委托  
  36.     self.pickerView.dataSource = self;  
  37.     self.pickerView.delegate = self;  
  38.       
  39.       
  40. }  
  41.   
  42. //UIPickerViewDataSource 委托方法, 设定 UIPickerView 每列的行数  
  43. - (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{  
  44.     //第一列 键值 就2个  
  45.     if(component == 0)  
  46.         return rails.count;  
  47.     //第二列 根据 键值的当前选中的键值  确定对应的集合, 然后返回该对应集合的个数  
  48.     return [[dictionary objectForKey:[rails objectAtIndex:selectedRail]] count];  
  49. }  
  50.   
  51. //UIPickerViewDataSource 委托方法, 设定 UIPickerView 的列数  
  52. - (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView{  
  53.     return 2;  
  54. }  
  55.   
  56. //UIPickerViewDelegate 委托方法, UIPickerView 指定列表选项上显示标题  
  57. - (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{  
  58.     if(component == 0){  
  59.         return [rails objectAtIndex:row];  
  60.     }  
  61.     return [[dictionary objectForKey:[rails objectAtIndex:selectedRail]] objectAtIndex:row];  
  62. }  
  63.   
  64. - (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{  
  65.     //UIAlertView 显示的信息  
  66.     NSString * message;  
  67.       
  68.     if(component == 0){  
  69.         /* 
  70.             选中的 键 这一列 
  71.          */  
  72.         //将当前选中的列 设置到类变量中  
  73.         selectedRail = row;  
  74.         //重新加载 第二列  
  75.         [self.pickerView reloadComponent:1];  
  76.           
  77.         //设置第二列的默认选中, 一旦切换键值, 第二列默认选中 第一个选项  
  78.         [self.pickerView selectRow:0 inComponent:1 animated:YES];  
  79.           
  80.         //第一项 即 键值, 第二项 根据字典中的键值 选择 对应集合中的第一个元素  
  81.         message = [NSString stringWithFormat:@"第一列选项 : %@, 第二列选项 : %@", [rails objectAtIndex:selectedRail], [[dictionary objectForKey:[rails objectAtIndex:selectedRail]] objectAtIndex:0]];  
  82.     }else if (component == 1){  
  83.         /* 
  84.             选中的 值 这一列 
  85.          */  
  86.         message = [NSString stringWithFormat:@"第一列选项 : %@, 第二列选项 : %@", [rails objectAtIndex:selectedRail], [[dictionary objectForKey:[rails objectAtIndex:selectedRail]] objectAtIndex:row]];  
  87.     }  
  88.       
  89.     /* 
  90.         创建并显示对话框 
  91.      */  
  92.     UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"选择内容" message:message delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];  
  93.     [alertView show];  
  94. }  
  95.   
  96. // 设置列宽  
  97. - (CGFloat) pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{  
  98.     if(component == 0){  
  99.         return 150;  
  100.     }  
  101.     return 150;  
  102. }  
  103.   
  104.   
  105. - (void)didReceiveMemoryWarning  
  106. {  
  107.     [super didReceiveMemoryWarning];  
  108.     // Dispose of any resources that can be recreated.  
  109. }  
  110.   
  111. @end  


-- 运行效果 : 





5. 老虎机 示例代码



(1) 相关 API 简介


相关 API 简介 : 

-- 音频文件使用流程 : 

[objc] view plaincopy
  1. //音频文件 位置  
  2. NSURL * gameSoundUrl = [[NSBundle mainBundle] URLForResource:@"gaming" withExtension:@"wav"];  
  3.   
  4. //音频标识  
  5. SystemSoundID soundId;  
  6. //加载音频文件  
  7. AudioServicesCreateSystemSoundID((__bridge CFURLRef)(gameSoundUrl), &soundId);  
  8. //播放音频  
  9. AudioServicesPlaySystemSound(soundId);  

-- 随机数生成 : 

[objc] view plaincopy
  1. //生成一个 0 ~ 5 之间的随机数  
  2. NSUInteger randomNum = arc4random() % icons.count;  

-- 设置 UIPickerView 选项 : 

[objc] view plaincopy
  1. //将随机数设置给 UIPickerView 的 四列 中的每行选项 索引  
  2. [self.pickerView selectRow:randomNum inComponent:i animated:YES];  



(2) 老虎机 代码示例


代码示例 : 

-- 界面设计文件 : 


-- OCViewController.h : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.h  
  3. //  TigerGame  
  4. //  
  5. //  Created by octopus on 15-12-23.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import <UIKit/UIKit.h>  
  10. #import <AudioToolbox/AudioToolbox.h>  
  11. //实现 UIPickerView 的两个委托协议  
  12. @interface OCViewController : UIViewController<UIPickerViewDataSource, UIPickerViewDelegate>  
  13.   
  14. //UIPickerView 引用  
  15. @property (strongnonatomic) IBOutlet UIPickerView *pickerView;  
  16. //UIButton 开始游戏按钮 引用  
  17. @property (strongnonatomic) IBOutlet UIButton *button;  
  18.   
  19. //点击按钮回调的方法  
  20. - (IBAction)startGame:(id)sender;  
  21. @end  


-- OCViewController.m : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.m  
  3. //  TigerGame  
  4. //  
  5. //  Created by octopus on 15-12-23.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import "OCViewController.h"  
  10.   
  11. @interface OCViewController ()  
  12.   
  13. @end  
  14.   
  15. @implementation OCViewController  
  16.   
  17. //设置一个默认的 控件 tag  
  18. #define imageTag 1  
  19.   
  20. //图标图片集合  
  21. NSArray * icons;  
  22.   
  23.   
  24. - (void)viewDidLoad  
  25. {  
  26.     [super viewDidLoad];  
  27.     // Do any additional setup after loading the view, typically from a nib.  
  28.       
  29.     /* 
  30.         加载 六张 图标图片 
  31.      */  
  32.       
  33.     UIImage * ai = [UIImage imageNamed:@"ai.png"];  
  34.     UIImage * as = [UIImage imageNamed:@"as.png"];  
  35.     UIImage * br = [UIImage imageNamed:@"br.png"];  
  36.     UIImage * eclipse = [UIImage imageNamed:@"eclipse.png"];  
  37.     UIImage * ps = [UIImage imageNamed:@"ps.png"];  
  38.     UIImage * xcode = [UIImage imageNamed:@"xcode.png"];  
  39.       
  40.       
  41.     //将六张 图标 图片放入集合中  
  42.     icons = [NSArray arrayWithObjects:ai, as, br, eclipse, ps, xcode, nil nil];  
  43.       
  44.     //设置 UIPickerView 委托  
  45.     self.pickerView.dataSource = self;  
  46.     self.pickerView.delegate = self;  
  47. }  
  48.   
  49. - (void)didReceiveMemoryWarning  
  50. {  
  51.     [super didReceiveMemoryWarning];  
  52.     // Dispose of any resources that can be recreated.  
  53. }  
  54.   
  55. //点击开始游戏按钮 回调的方法  
  56. - (IBAction)startGame:(id)sender {  
  57.     //设置按钮不可点击  
  58.     self.button.enabled = NO;  
  59.       
  60.     //音频文件 位置  
  61.     NSURL * gameSoundUrl = [[NSBundle mainBundle] URLForResource:@"gaming" withExtension:@"wav"];  
  62.       
  63.     //音频标识  
  64.     SystemSoundID soundId;  
  65.     //加载音频文件  
  66.     AudioServicesCreateSystemSoundID((__bridge CFURLRef)(gameSoundUrl), &soundId);  
  67.     //播放音频  
  68.     AudioServicesPlaySystemSound(soundId);  
  69.       
  70.     for (int i = 0; i < 4; i++) {  
  71.         //生成一个 0 ~ 5 之间的随机数  
  72.         NSUInteger randomNum = arc4random() % icons.count;  
  73.         //将随机数设置给 UIPickerView 的 四列 中的每行选项 索引  
  74.         [self.pickerView selectRow:randomNum inComponent:i animated:YES];  
  75.     }  
  76.       
  77.     //设置按钮可用  
  78.     self.button.enabled = YES;  
  79.       
  80. }  
  81.   
  82.   
  83. /* 
  84.     下面是 UIPickerViewDataSource 的委托方法 
  85.  */  
  86.   
  87. //UIPickerViewDataSource 委托方法, 设置 UIPickerView 的列数  
  88. - (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView{  
  89.     return 4;  
  90. }  
  91.   
  92. //UIPickerViewDataSource 委托方法, 设置 UIPickerView 每一列的行数  
  93. - (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{  
  94.     return icons.count;  
  95. }  
  96.   
  97. /* 
  98.     下面是 UIPickerViewDelegate 的委托方法 
  99.  */  
  100.   
  101. //设置每个 UIPickerView 中每列 每行 的选项 UI 控件  
  102. - (UIView *) pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{  
  103.     /* 
  104.         这里注意 重用 View 的 tag, 我们将 View 的 tag 设置为1,  
  105.         如果 View 是已经重用的 直接返回, 如果没有重用,  
  106.         创建 View 设置其 tag 为1, 并返回 
  107.      */  
  108.     if (view.tag != imageTag) {  
  109.         //创建一个 UIImageView, 并为其设置一张图片  
  110.         view = [[UIImageView alloc] initWithImage : [icons objectAtIndex : row]];  
  111.         //UIImageView 设置 tag 标识  
  112.         view.tag = imageTag;  
  113.         //设置该组件不可响应任何事件  
  114.         view.userInteractionEnabled = NO;  
  115.         view.contentMode = UIViewContentModeScaleAspectFill;  
  116.     }  
  117.     return view;  
  118. }  
  119.   
  120. //设置 UIPickerView 中每个选项的 宽度 40  
  121. - (CGFloat) pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{  
  122.     return 70;  
  123. }  
  124.   
  125. //设置 UIPickerView 中每个选项的 高度 40  
  126. - (CGFloat) pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{  
  127.     return 70;  
  128. }  
  129.   
  130.   
  131.   
  132.   
  133. @end  


-- 运行效果 : 







四. 微调器 (UIStepper)




1. UIStepper 属性简介


UIStepper 属性截图 : 




(1) value 属性 


value 属性 : 


-- Minimum : UIStepper 最小值, 默认 0;

-- Maximum : UIStepper 最大值, 默认 100;

-- Current : UIStepper 当前值, 在 Minimum 与 Maximum 之间;

-- Step : 每次点击 + 或 -, 增加 或 减小的值;



(2) Behavior 属性 


Behavior 属性 : 

-- AutoRepeat : 默认 YES, 此时按住 + 或 - 不放, value 值会持续增加 或 减小;

-- Continuous : 默认 YES, 此时 交互时会立即发送 value change 事件, NO 时 会等交互结束后才发送 value change 事件;

-- Wrap : 默认 NO, YES 时 当值持续增加 比 Maximum 还大时会变成 Minimum, 当 值持续减小 比 Minimum 还小时会变为 Maximum;




2. UIStepper 代码示例



代码示例 : 

-- 界面设计文件 : 


-- OCViewController.h : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.h  
  3. //  UIStepper  
  4. //  
  5. //  Created by octopus on 15-12-24.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import <UIKit/UIKit.h>  
  10.   
  11. @interface OCViewController : UIViewController  
  12.   
  13. @property (strongnonatomic) IBOutlet UILabel *label1;  
  14. @property (strongnonatomic) IBOutlet UILabel *label2;  
  15.   
  16. //将三个 UIStepper 的 IBAction 绑定方法都绑定在一个 valueChange 方法中  
  17. - (IBAction)valueChanged:(UIStepper *)sender;  
  18.   
  19. @end  


-- OCViewController.m : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.m  
  3. //  UIStepper  
  4. //  
  5. //  Created by octopus on 15-12-24.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import "OCViewController.h"  
  10.   
  11. @interface OCViewController ()  
  12.   
  13. @end  
  14.   
  15. @implementation OCViewController  
  16.   
  17. - (void)viewDidLoad  
  18. {  
  19.     [super viewDidLoad];  
  20.     // Do any additional setup after loading the view, typically from a nib.  
  21. }  
  22.   
  23. - (void)didReceiveMemoryWarning  
  24. {  
  25.     [super didReceiveMemoryWarning];  
  26.     // Dispose of any resources that can be recreated.  
  27. }  
  28.   
  29. - (IBAction)valueChanged:(UIStepper *)sender {  
  30.     /* 
  31.         注意 将 double 类型转为字符串, 需要使用 NSString 的 stringWithFormat 方法进行转换 
  32.      */  
  33.     switch (sender.tag) {  
  34.         case 0:  
  35.             self.label1.text = [NSString stringWithFormat:@"%g", sender.value];  
  36.             break;  
  37.         case 1:  
  38.             self.label2.text = [NSString stringWithFormat:@"%g", sender.value];  
  39.             break;  
  40.               
  41.         default:  
  42.             break;  
  43.     }  
  44. }  
  45. @end  


-- 运行效果 : 






四. 网页控件 (UIWebView)


1. UIWebView 控件属性


UIWebView 控件属性截图 : 



(1) Scaling 属性 


Scaling 属性作用 : 是否缩放网页适配 UIWebView 控件;



(2) detection 属性 


detection 属性 


-- Links : 自动识别超链接, 点击超链接进入该页面;

-- Address : 自动识别网页上的地址;

-- Phone Numbers : 自动识别电话号码, 点击电话号码就会自动拨号;

-- Events : 自动识别网页上的日历事件;




2. UIWebView 操作



(1) UIWebView 内容加载


UIWebView 加载 : 

-- "loadHTMLString : baseURL" 方法 : 加载显示 HTML 字符串;

-- "loadRequest" 方法 : 加载显示 网页;

-- "stringByEvaluatingJavaScriptFromString" 方法 : 执行 JavaScript 字符串, 并返回结果;



(2) UIWebView 导航控制


UIWebView 导航控制 : 

-- "goBack" 方法 : 后退回上一页;

-- "goForward" 方法 : 前进;

-- "reload" 方法 : 重新加载网页;

-- "stopLoading" 方法 : 停止加载网页;



(3) UIWebViewDelegate 协议委托


UIWebViewDelegate 协议 : 

-- "webView:shouldStartLoadWithRequest:navigationType" 方法 : 加载指定 URL 网页时回调该方法;

-- "webViewDidStartLoad" 方法 : 开始加载网页时激发的方法;

-- "webViewDidFinishLoad" 方法 : 结束加载网页回调的方法;

-- "webViewDidFailLoadWithError" 方法 : 加载出现错误回调方法;




3. UIWebView 浏览器示例



(1) 相关 API


相关 API 简介 : 

-- 设置网页内容自适应 : 

[objc] view plaincopy
  1. //设置 UIWebView 网页内容自适应  
  2. self.webView.scalesPageToFit = YES;  

-- 生成对话框显示加载错误内容 :

[objc] view plaincopy
  1. //生成对话框 显示 加载失败内容  
  2. UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"加载失败" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil nil];  

-- 根据 String 字符串 获取 URL 对象 : 

[objc] view plaincopy
  1. //加载网页内容  
  2. [self.textField resignFirstResponder];  
  3. //获取网页地址  
  4. NSString * address = self.textField.text;  
  5. //将地址转为 url  
  6. NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL URLWithString:address]];  

-- 加载网页内容 : 

[objc] view plaincopy
  1. //加载网页内容  
  2. [self.webView loadRequest:request];  

-- 停止加载网页 : 

[objc] view plaincopy
  1. //停止加载  
  2. [self.webView stopLoading];  

-- 重新加载网页 : 

[objc] view plaincopy
  1. //重新加载  
  2. [self.webView reload];  

-- 前进 : 

[objc] view plaincopy
  1. //前进  
  2. [self.webView goForward];  


-- 后退 : 

[objc] view plaincopy
  1. //后退  
  2. [self.webView goBack];  




(2) 代码示例


代码示例 : 

-- 界面设计文件 : 


-- OCViewController.h : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.h  
  3. //  UIWebView  
  4. //  
  5. //  Created by octopus on 15-12-28.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import <UIKit/UIKit.h>  
  10.   
  11. @interface OCViewController : UIViewController <UIWebViewDelegate>  
  12. //地址栏输入框 引用  
  13. @property (strongnonatomic) IBOutlet UITextField *textField;  
  14. //网页控件 引用  
  15. @property (strongnonatomic) IBOutlet UIWebView *webView;  
  16.   
  17. //五个按钮的点击方法都回调该方法, 通过 tag 属性来区分不同的按钮  
  18. - (IBAction)click:(UIButton *)sender;  
  19.   
  20. @end  


-- OCViewController.m : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.m  
  3. //  UIWebView  
  4. //  
  5. //  Created by octopus on 15-12-28.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import "OCViewController.h"  
  10.   
  11. @interface OCViewController ()  
  12.   
  13. @end  
  14.   
  15. @implementation OCViewController  
  16.   
  17.   
  18. - (void)viewDidLoad  
  19. {  
  20.     [super viewDidLoad];  
  21.     // Do any additional setup after loading the view, typically from a nib.  
  22.       
  23.     //设置 UIWebView 网页内容自适应  
  24.     self.webView.scalesPageToFit = YES;  
  25.     //设置 UIWebView 的委托  
  26.     self.webView.delegate = self;  
  27.       
  28. }  
  29.   
  30. - (void) webViewDidStartLoad:(UIWebView *)webView{  
  31. }  
  32.   
  33. - (void) webViewDidFinishLoad:(UIWebView *)webView{  
  34. }  
  35.   
  36. - (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{  
  37.     //生成对话框 显示 加载失败内容  
  38.     UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"加载失败" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil nil];  
  39.     //显示对话框  
  40.     [alertView show];  
  41. }  
  42.   
  43. - (void)didReceiveMemoryWarning  
  44. {  
  45.     [super didReceiveMemoryWarning];  
  46.     // Dispose of any resources that can be recreated.  
  47. }  
  48.   
  49. - (IBAction)click:(UIButton *)sender {  
  50.     NSInteger tag = sender.tag;  
  51.     NSLog(@"tag : %d", tag);  
  52.     switch (tag) {  
  53.         case 0:{  
  54.             //加载网页内容  
  55.             [self.textField resignFirstResponder];  
  56.             //获取网页地址  
  57.             NSString * address = self.textField.text;  
  58.             //将地址转为 url  
  59.             NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL URLWithString:address]];  
  60.             //加载网页内容  
  61.             [self.webView loadRequest:request];  
  62.         }  
  63.             break;  
  64.         case 1:  
  65.             //后退  
  66.             [self.webView goBack];  
  67.             break;  
  68.         case 2:  
  69.             //前进  
  70.             [self.webView goForward];  
  71.             break;  
  72.         case 3:  
  73.             //重新加载  
  74.             [self.webView reload];  
  75.             break;  
  76.         case 4:  
  77.             //停止加载  
  78.             [self.webView stopLoading];  
  79.             break;  
  80.               
  81.         default:  
  82.             break;  
  83.     }  
  84. }  
  85. @end  


-- 运行效果 : 










五. 工具条控件 (UIToolBar)


1. UIToolBar 控件属性


UIToolBar 属性截图 : 



(1) Style 属性 


Style 属性 : 指定工具条风格;


-- Default : 默认风格;

-- Black : 黑色背景, 白字风格;

-- Black Translucent (Deprecated) : 透明背景;



(2) items 属性


items 属性 : 该 Item 是一个 NSArray 对象, 包含多个 BarButtonItem;

 





2. UIToolBar 工具条代码示例




(1) 工具条代码示例


代码示例 : 

-- 界面设计文件 : 


-- OCViewController.h : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.h  
  3. //  UItoolBar  
  4. //  
  5. //  Created by octopus on 15-12-29.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import <UIKit/UIKit.h>  
  10.   
  11. @interface OCViewController : UIViewController  
  12.   
  13.   
  14. - (IBAction)click:(UIBarButtonItem *)sender;  
  15.   
  16. @end  


-- OCViewController.m : 

[objc] view plaincopy
  1. //  
  2. //  OCViewController.m  
  3. //  UItoolBar  
  4. //  
  5. //  Created by octopus on 15-12-29.  
  6. //  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.  
  7. //  
  8.   
  9. #import "OCViewController.h"  
  10.   
  11. @interface OCViewController ()  
  12.   
  13. @end  
  14.   
  15. @implementation OCViewController  
  16.   
  17. UIProgressView * progress;  
  18. NSTimer * timer;  
  19.   
  20. - (void)viewDidLoad  
  21. {  
  22.     [super viewDidLoad];  
  23.     // Do any additional setup after loading the view, typically from a nib.  
  24.       
  25.     //创建 UIToolBar 控件  
  26.     UIToolbar * toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(05032044)];  
  27.     [self.view addSubview:toolBar];  
  28.       
  29.     //创建文字的 控件按钮  
  30.     UIBarButtonItem * bi1 = [[UIBarButtonItem alloc] initWithTitle:@"Left" style:UIBarButtonItemStylePlain target:self action:@selector(clickCodeItem:)];  
  31.       
  32.     //创建 图片的 控件按钮  
  33.     UIBarButtonItem * bi2 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"xcode.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(clickCodeItem:)];  
  34.       
  35.     //创建 一个 系统的添加 按钮  
  36.     UIBarButtonItem * bi3 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(clickCodeItem:)];  
  37.       
  38.     //创建固定长度的空白  
  39.     UIBarButtonItem * bi4 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];  
  40.       
  41.     //将进度条 封装成 UIBarButtonItem 按钮  
  42.     progress = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleBar];  
  43.     progress.frame = CGRectMake(008020);  
  44.     progress.progress = 0;  
  45.     UIBarButtonItem * bi5 = [[UIBarButtonItem alloc] initWithCustomView:progress];  
  46.       
  47.     //将上面创建的按钮添加到工具条中  
  48.     toolBar.items = [NSArray arrayWithObjects:bi1, bi2, bi3, bi4, bi5, nil nil];  
  49.       
  50.     //启动一个定时器, 更新进度条  
  51.     timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(changeProgress) userInfo:nil repeats:YES];  
  52.       
  53. }  
  54.   
  55. - (void)didReceiveMemoryWarning  
  56. {  
  57.     [super didReceiveMemoryWarning];  
  58.     // Dispose of any resources that can be recreated.  
  59. }  
  60.   
  61. - (IBAction)click:(UIBarButtonItem *)sender {  
  62.     NSLog(@"tag : %d, tittle : %@", sender.tag, [sender title]);  
  63. }  
  64.   
  65. - (void) clickCodeItem : (id)sender{  
  66.     NSLog(@"点击 %@", sender);  
  67. }  
  68.   
  69. - (void) changeProgress{  
  70.     if (progress.progress >= 1.0) {  
  71.         [timer invalidate];  
  72.     }else{  
  73.         [progress setProgress:progress.progress + 0.01 animated:YES];  
  74.     }  
  75. }  
  76.   
  77. @end  


-- 运行效果 :

[objc] view plaincopy
  1. 2015-12-29 15:17:55.644 UItoolBar[2331:60b] 点击 <UIBarButtonItem: 0x8c3b0d0>  
  2. 2015-12-29 15:17:58.925 UItoolBar[2331:60b] 点击 <UIBarButtonItem: 0x8c3a3d0>  
  3. 2015-12-29 15:18:00.669 UItoolBar[2331:60b] 点击 <UIBarButtonItem: 0x8c3c1a0>  
  4. 2015-12-29 15:18:07.831 UItoolBar[2331:60b] tag : 1, tittle : Left  
  5. 2015-12-29 15:18:09.446 UItoolBar[2331:60b] tag : 2, tittle : Center  
  6. 2015-12-29 15:18:10.961 UItoolBar[2331:60b] tag : 3, tittle : Right  

 


转载注明出处 : http://blog.csdn.net/shulianghan/article/details/50348982

0 0
原创粉丝点击