【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )
轉載注明出處 :?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 :?
// // OCViewController.h // UIDatePicker // // Created by octopus on 15-12-19. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import <UIKit/UIKit.h>@interface OCViewController : UIViewController @property (strong, nonatomic) IBOutlet UIDatePicker *datePicker; - (IBAction)click:(id)sender;@end
-- OCViewController.m :?
// // OCViewController.m // UIDatePicker // // Created by octopus on 15-12-19. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import "OCViewController.h"@interface OCViewController ()@end@implementation OCViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib. }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }- (IBAction)click:(id)sender {//從 UIdatePicker 中獲取事件NSDate * date = [self.datePicker date];//創建 Date 格式化工具NSDateFormatter * formatter = [[NSDateFormatter alloc] init];//格式日期格式化格式[formatter setDateFormat:@"yyyy-MM-dd HH:mm"];//將日期轉為格式化好的字符串NSString * dateString = [formatter stringFromDate:date];//創建 警告對話框NSString * message = [NSString stringWithFormat:@"UIDatePicker 被選中的時間是 %@", dateString];UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"時間選擇" message:message delegate:nil cancelButtonTitle:@"確定" otherButtonTitles: nil];//顯示警告對話框[alertView show]; } @end
-- 界面運行效果 :?
3. UIDatePicker 計時器 示例代碼
計時器示例代碼 :?
-- 界面設計文件 :?
-- OCViewController.h :?
// // OCViewController.h // UIDatePicker // // Created by octopus on 15-12-19. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import <UIKit/UIKit.h>@interface OCViewController : UIViewController //日期選擇器 @property (strong, nonatomic) IBOutlet UIDatePicker *datePicker; //計時器 @property (strong, nonatomic) IBOutlet UIDatePicker *countDown; //計時器按鈕控件 @property (strong, nonatomic) IBOutlet UIButton *countDownBt; //日期選擇器下的按鈕方法 - (IBAction)click:(id)sender; //計時器下的按鈕方法 - (IBAction)clickCountDown:(id)sender;@end
-- OCViewController.m :?
// // OCViewController.m // UIDatePicker // // Created by octopus on 15-12-19. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import "OCViewController.h"@interface OCViewController ()@end@implementation OCViewControllerNSTimer * timer; NSInteger second;- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.//設置 UIDatePicker 模式為 計時器模式self.countDown.datePickerMode = UIDatePickerModeCountDownTimer; }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }- (IBAction)click:(id)sender {//從 UIdatePicker 中獲取事件NSDate * date = [self.datePicker date];//創建 Date 格式化工具NSDateFormatter * formatter = [[NSDateFormatter alloc] init];//格式日期格式化格式[formatter setDateFormat:@"yyyy-MM-dd HH:mm"];//將日期轉為格式化好的字符串NSString * dateString = [formatter stringFromDate:date];//創建 警告對話框NSString * message = [NSString stringWithFormat:@"UIDatePicker 被選中的時間是 %@", dateString];UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"時間選擇" message:message delegate:nil cancelButtonTitle:@"確定" otherButtonTitles: nil];//顯示警告對話框[alertView show]; }- (IBAction)clickCountDown:(id)sender {NSLog(@"點擊了 clickCountDown");//獲取倒計時剩余時間second = self.countDown.countDownDuration;//設置 UIDatePicker 和 倒計時按鈕 禁用狀態self.countDown.enabled = NO;[sender setEnabled:NO];//生成當前秒數 字符串NSString * message = [NSString stringWithFormat:@"倒計時 剩余 %d", second];//創建警告框UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"倒計時" message:message delegate:nil cancelButtonTitle:@"確定" otherButtonTitles: nil];//顯示警告框[alert show];//啟動定時器, 每隔 1 秒調用一次timer = [NSTimer scheduledTimerWithTimeInterval:60 target:self selector:@selector(tick) userInfo:nil repeats:YES]; }-(void) tick{//秒數 減去 60second = second - 60;//將自減后的秒數設置給 UIDatePickerself.countDown.countDownDuration = second;//如果倒計時完畢, 控件 恢復正常if(second <= 0){[timer invalidate];self.countDown.enabled = YES;self.countDownBt.enabled = YES;} } @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 類型;
typedef float CGFloat;// 32-bit typedef double CGFloat;// 64-bitstruct CGPoint {CGFloat x;CGFloat y; };
-- 主要作用 : 為 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 設置 數據 和 操作 委托 :?
//為 UIPickerView 設置 UIPickerViewDataSource 委托self.pickerView.dataSource = self;//為 UIPickerView 設置 UIPickerViewDelegate 委托self.pickerView.delegate = self;
-- 設置 UIPickerView 列數 : 該方法是 UIPickerViewDataSource 委托方法;
//UIPickerViewDataSource 委托中定義的方法, 返回 UIPickerView 包含多少列 - (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView{return 1; }
-- 設置 UIPickerView 某列對應選項個數 : 該方法是 UIPickerViewDataSource 委托方法;
//UIPickerViewDataSource 委托方法, 獲取指定列 有多少個選項數據 - (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{/*component 是列的索引*/return array.count; }
-- 設置 UIPickerView 選項返回的字符串值 : 該方法是 UIPickerViewDelegate 委托方法;
/*UIPickerViewDelegate 委托方法, 該方法返回指定列的 指定 選項 的值row 參數 : 行 索引component 參數 : 列 索引, 由于 只有一列, 因此我們不必關系 該索引, 只需要關心 行 索引即可*/ - (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{return [array objectAtIndex:row]; }
-- 設置 UIPickerView 選中選項方法 : 該方法是 UIPickerViewDelegate 委托方法;
/*UIPickerViewDelegate 委托方法, 當選中某個選項時 激發的方法row 參數 : 選中選項所在的列的索引component 參數 : 選中選項所在的行的索引*/ - (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{// 生成對話框, 在對話框中顯示選中的內容UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"UIPickerView 提示" message:[NSString stringWithFormat : @"UIPickerView 選中選項是 : %@", [array objectAtIndex : row]] delegate:nil cancelButtonTitle:@"確定" otherButtonTitles: nil];//顯示對話框[alert show]; }
(2) 單行選擇器代碼示例
單行選擇器代碼示例 :?
-- 界面設計文件 :?
-- OCViewController.h :?
// // OCViewController.h // UIPickerView // // Created by octopus on 15-12-21. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import <UIKit/UIKit.h>@interface OCViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>// UIPIckerView 的 IBOutlet 引用 @property (strong, nonatomic) IBOutlet UIPickerView *pickerView;@end
-- OCViewController.m :?
// // OCViewController.m // UIPickerView // // Created by octopus on 15-12-21. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import "OCViewController.h"@interface OCViewController ()@end@implementation OCViewControllerNSArray * array;- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.//創建 UIPickerView 列表中顯示的字符串集合array = [NSArray arrayWithObjects:@"知春路", @"五道口", @"上地", @"西二旗", @"龍澤", @"回龍觀", nil];//為 UIPickerView 設置 UIPickerViewDataSource 委托self.pickerView.dataSource = self;//為 UIPickerView 設置 UIPickerViewDelegate 委托self.pickerView.delegate = self;}//UIPickerViewDataSource 委托中定義的方法, 返回 UIPickerView 包含多少列 - (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView{return 1; }//UIPickerViewDataSource 委托方法, 獲取指定列 有多少個選項數據 - (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{/*component 是列的索引*/return array.count; }/*UIPickerViewDelegate 委托方法, 該方法返回指定列的 指定 選項 的值row 參數 : 行 索引component 參數 : 列 索引, 由于 只有一列, 因此我們不必關系 該索引, 只需要關心 行 索引即可*/ - (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{return [array objectAtIndex:row]; }/*UIPickerViewDelegate 委托方法, 當選中某個選項時 激發的方法row 參數 : 選中選項所在的列的索引component 參數 : 選中選項所在的行的索引*/ - (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{// 生成對話框, 在對話框中顯示選中的內容UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"UIPickerView 提示" message:[NSString stringWithFormat : @"UIPickerView 選中選項是 : %@", [array objectAtIndex : row]] delegate:nil cancelButtonTitle:@"確定" otherButtonTitles: nil];//顯示對話框[alert show]; }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }- (void) valueChange{ }@end
-- 運行效果展示 :?
3. 多行列表選擇器示例代碼
(1) 示例代碼
多行列表選擇示例代碼 :?
-- 界面設計文件 :?
-- OCViewController.h :?
// // OCViewController.h // MultiUIPickerView // // Created by octopus on 15-12-23. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import <UIKit/UIKit.h>/*實現 UIPickerViewDelegate 和 UIPickerViewDataSource 兩個協議*/ @interface OCViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> @property (strong, nonatomic) IBOutlet UIPickerView *pickerView;@end
-- OCViewController.m :?
// // OCViewController.m // MultiUIPickerView // // Created by octopus on 15-12-23. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import "OCViewController.h"@interface OCViewController ()@end@implementation OCViewController//用于存儲數據源 NSArray * line13; NSArray * line1;//分別存儲當前數據源中的索引 NSInteger line1_row; NSInteger line13_row;- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.line13 = [NSArray arrayWithObjects:@"西直門", @"大鐘寺", @"知春路", @"五道口", @"上地", @"西二旗", nil];line1 = [NSArray arrayWithObjects:@"八寶山", @"五棵松", @"八角游樂園", @"蘋果園", @"萬壽路", @"公主墳", nil];self.pickerView.dataSource = self;self.pickerView.delegate = self; }//UIPickerViewDataSource 委托方法, 設定 UIPickerView 列數 - (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView{return 2; }//UIPickerViewDataSource 委托方法, 設置每一列的選項個數 - (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{NSInteger count;switch (component) {case 0:count = line13.count;break;case 1:count = line1.count;break;default:count = 0;break;}return count; }//UIPickerViewDelegate 委托方法, 設置每個選項的顯示的字符串標題 - (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{NSString * tittle;switch (component) {case 0:tittle = [line13 objectAtIndex:row];break;case 1:tittle = [line1 objectAtIndex:row];break;default:tittle = nil;break;}return tittle; }//UIPickerViewDelegate 委托方法, 設置選中回調方法 -(void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{//設置當前獲取的 行列 值, 并存儲到類變量中if(component == 0){line13_row = row;}else if(component == 1){line1_row = row;}//生成對話框中顯示的字符串NSString * message = [NSString stringWithFormat:@"選中內容 一號線 %@, 十三號線 %@", [line1 objectAtIndex:line1_row], [line13 objectAtIndex:line13_row]];//生成UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"UIPickerView 多行選擇" message:message delegate:nil cancelButtonTitle:@"確定" otherButtonTitles: nil];[alertView show]; }//指定 UIPickerView 的選項寬度 - (CGFloat) pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{CGFloat width;switch (component) {case 0:width = 100;break;case 1:width = 150;break;default:break;}return width; }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }@end
-- 運行效果 :?
4. 相關聯的多行列表選擇器示例代碼
(1) 相關 API 簡介
相關 API 簡介 :?
-- 實現 UIPickerView 委托協議 :?
@interface OCViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>
-- 設置 UIPickerView 委托 :?
//設置委托self.pickerView.dataSource = self;self.pickerView.delegate = self;
//重新加載 第二列[self.pickerView reloadComponent:1];
-- UIPickerView 設置默認選項 :?
//設置第二列的默認選中, 一旦切換鍵值, 第二列默認選中 第一個選項[self.pickerView selectRow:0 inComponent:1 animated:YES];
轉載注明出處?:?http://blog.csdn.net/shulianghan/article/details/50348982
(2) 關聯多項 UIPickerView 示例代碼
示例代碼 :?
-- 解析 : 在 API 內部是沒有定義關聯邏輯的, 關聯邏輯是開發者自己使用邏輯實現的, 與上面的示例代碼沒有本質區別, 使用的還是相同的一套 API;
-- 界面設計文件 :?
-- OCViewController.h :?
// // OCViewController.h // CertainMultiPickerView // // Created by octopus on 15-12-23. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import <UIKit/UIKit.h>@interface OCViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate> @property (strong, nonatomic) IBOutlet UIPickerView *pickerView; @end
-- OCViewController.m :?
// // OCViewController.m // CertainMultiPickerView // // Created by octopus on 15-12-23. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import "OCViewController.h"@interface OCViewController ()@end@implementation OCViewControllerNSDictionary * dictionary; NSArray * rails; NSInteger selectedRail;- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.//數據源dictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSArray arrayWithObjects:@"知春路", @"五道口", @"西二旗", @"龍澤", nil], @"十三號線", [NSArray arrayWithObjects : @"五棵松", @"八寶山",@"八角游樂園", @"蘋果園", nil], @"一號線" , nil];//獲取鍵值集合rails = [dictionary allKeys];//當前顯示的鍵值selectedRail = 0;//設置委托self.pickerView.dataSource = self;self.pickerView.delegate = self;}//UIPickerViewDataSource 委托方法, 設定 UIPickerView 每列的行數 - (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{//第一列 鍵值 就2個if(component == 0)return rails.count;//第二列 根據 鍵值的當前選中的鍵值 確定對應的集合, 然后返回該對應集合的個數return [[dictionary objectForKey:[rails objectAtIndex:selectedRail]] count]; }//UIPickerViewDataSource 委托方法, 設定 UIPickerView 的列數 - (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView{return 2; }//UIPickerViewDelegate 委托方法, UIPickerView 指定列表選項上顯示標題 - (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{if(component == 0){return [rails objectAtIndex:row];}return [[dictionary objectForKey:[rails objectAtIndex:selectedRail]] objectAtIndex:row]; }- (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{//UIAlertView 顯示的信息NSString * message;if(component == 0){/*選中的 鍵 這一列*///將當前選中的列 設置到類變量中selectedRail = row;//重新加載 第二列[self.pickerView reloadComponent:1];//設置第二列的默認選中, 一旦切換鍵值, 第二列默認選中 第一個選項[self.pickerView selectRow:0 inComponent:1 animated:YES];//第一項 即 鍵值, 第二項 根據字典中的鍵值 選擇 對應集合中的第一個元素message = [NSString stringWithFormat:@"第一列選項 : %@, 第二列選項 : %@", [rails objectAtIndex:selectedRail], [[dictionary objectForKey:[rails objectAtIndex:selectedRail]] objectAtIndex:0]];}else if (component == 1){/*選中的 值 這一列*/message = [NSString stringWithFormat:@"第一列選項 : %@, 第二列選項 : %@", [rails objectAtIndex:selectedRail], [[dictionary objectForKey:[rails objectAtIndex:selectedRail]] objectAtIndex:row]];}/*創建并顯示對話框*/UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"選擇內容" message:message delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil];[alertView show]; }// 設置列寬 - (CGFloat) pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{if(component == 0){return 150;}return 150; }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }@end
-- 運行效果 :?
5. 老虎機 示例代碼
(1) 相關 API 簡介
相關 API 簡介 :?
-- 音頻文件使用流程 :?
//音頻文件 位置NSURL * gameSoundUrl = [[NSBundle mainBundle] URLForResource:@"gaming" withExtension:@"wav"];//音頻標識SystemSoundID soundId;//加載音頻文件AudioServicesCreateSystemSoundID((__bridge CFURLRef)(gameSoundUrl), &soundId);//播放音頻AudioServicesPlaySystemSound(soundId);
-- 隨機數生成 :?
//生成一個 0 ~ 5 之間的隨機數NSUInteger randomNum = arc4random() % icons.count;
-- 設置 UIPickerView 選項 :?
//將隨機數設置給 UIPickerView 的 四列 中的每行選項 索引[self.pickerView selectRow:randomNum inComponent:i animated:YES];
(2) 老虎機 代碼示例
代碼示例 :?
-- 界面設計文件 :?
-- OCViewController.h :?
// // OCViewController.h // TigerGame // // Created by octopus on 15-12-23. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import <UIKit/UIKit.h> #import <AudioToolbox/AudioToolbox.h> //實現 UIPickerView 的兩個委托協議 @interface OCViewController : UIViewController<UIPickerViewDataSource, UIPickerViewDelegate>//UIPickerView 引用 @property (strong, nonatomic) IBOutlet UIPickerView *pickerView; //UIButton 開始游戲按鈕 引用 @property (strong, nonatomic) IBOutlet UIButton *button;//點擊按鈕回調的方法 - (IBAction)startGame:(id)sender; @end
-- OCViewController.m :?
// // OCViewController.m // TigerGame // // Created by octopus on 15-12-23. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import "OCViewController.h"@interface OCViewController ()@end@implementation OCViewController//設置一個默認的 控件 tag #define imageTag 1//圖標圖片集合 NSArray * icons;- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib./*加載 六張 圖標圖片*/UIImage * ai = [UIImage imageNamed:@"ai.png"];UIImage * as = [UIImage imageNamed:@"as.png"];UIImage * br = [UIImage imageNamed:@"br.png"];UIImage * eclipse = [UIImage imageNamed:@"eclipse.png"];UIImage * ps = [UIImage imageNamed:@"ps.png"];UIImage * xcode = [UIImage imageNamed:@"xcode.png"];//將六張 圖標 圖片放入集合中icons = [NSArray arrayWithObjects:ai, as, br, eclipse, ps, xcode, nil];//設置 UIPickerView 委托self.pickerView.dataSource = self;self.pickerView.delegate = self; }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }//點擊開始游戲按鈕 回調的方法 - (IBAction)startGame:(id)sender {//設置按鈕不可點擊self.button.enabled = NO;//音頻文件 位置NSURL * gameSoundUrl = [[NSBundle mainBundle] URLForResource:@"gaming" withExtension:@"wav"];//音頻標識SystemSoundID soundId;//加載音頻文件AudioServicesCreateSystemSoundID((__bridge CFURLRef)(gameSoundUrl), &soundId);//播放音頻AudioServicesPlaySystemSound(soundId);for (int i = 0; i < 4; i++) {//生成一個 0 ~ 5 之間的隨機數NSUInteger randomNum = arc4random() % icons.count;//將隨機數設置給 UIPickerView 的 四列 中的每行選項 索引[self.pickerView selectRow:randomNum inComponent:i animated:YES];}//設置按鈕可用self.button.enabled = YES;}/*下面是 UIPickerViewDataSource 的委托方法*///UIPickerViewDataSource 委托方法, 設置 UIPickerView 的列數 - (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView{return 4; }//UIPickerViewDataSource 委托方法, 設置 UIPickerView 每一列的行數 - (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{return icons.count; }/*下面是 UIPickerViewDelegate 的委托方法*///設置每個 UIPickerView 中每列 每行 的選項 UI 控件 - (UIView *) pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{/*這里注意 重用 View 的 tag, 我們將 View 的 tag 設置為1, 如果 View 是已經重用的 直接返回, 如果沒有重用, 創建 View 設置其 tag 為1, 并返回*/if (view.tag != imageTag) {//創建一個 UIImageView, 并為其設置一張圖片view = [[UIImageView alloc] initWithImage : [icons objectAtIndex : row]];//UIImageView 設置 tag 標識view.tag = imageTag;//設置該組件不可響應任何事件view.userInteractionEnabled = NO;view.contentMode = UIViewContentModeScaleAspectFill;}return view; }//設置 UIPickerView 中每個選項的 寬度 40 - (CGFloat) pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{return 70; }//設置 UIPickerView 中每個選項的 高度 40 - (CGFloat) pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{return 70; }@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 :?
// // OCViewController.h // UIStepper // // Created by octopus on 15-12-24. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import <UIKit/UIKit.h>@interface OCViewController : UIViewController@property (strong, nonatomic) IBOutlet UILabel *label1; @property (strong, nonatomic) IBOutlet UILabel *label2;//將三個 UIStepper 的 IBAction 綁定方法都綁定在一個 valueChange 方法中 - (IBAction)valueChanged:(UIStepper *)sender;@end
-- OCViewController.m :?
// // OCViewController.m // UIStepper // // Created by octopus on 15-12-24. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import "OCViewController.h"@interface OCViewController ()@end@implementation OCViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib. }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }- (IBAction)valueChanged:(UIStepper *)sender {/*注意 將 double 類型轉為字符串, 需要使用 NSString 的 stringWithFormat 方法進行轉換*/switch (sender.tag) {case 0:self.label1.text = [NSString stringWithFormat:@"%g", sender.value];break;case 1:self.label2.text = [NSString stringWithFormat:@"%g", sender.value];break;default:break;} } @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 簡介 :?
-- 設置網頁內容自適應 :?
//設置 UIWebView 網頁內容自適應self.webView.scalesPageToFit = YES;
-- 生成對話框顯示加載錯誤內容 :
//生成對話框 顯示 加載失敗內容UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"加載失敗" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"確定" otherButtonTitles: nil];
-- 根據 String 字符串 獲取 URL 對象 :?
//加載網頁內容[self.textField resignFirstResponder];//獲取網頁地址NSString * address = self.textField.text;//將地址轉為 urlNSURLRequest * request = [NSURLRequest requestWithURL:[NSURL URLWithString:address]];
-- 加載網頁內容 :?
//加載網頁內容[self.webView loadRequest:request];
-- 停止加載網頁 :?
//停止加載[self.webView stopLoading];
-- 重新加載網頁 :?
//重新加載[self.webView reload];
-- 前進 :?
//前進[self.webView goForward];
-- 后退 :?
//后退[self.webView goBack];
(2) 代碼示例
代碼示例 :?
-- 界面設計文件 :?
-- OCViewController.h :?
// // OCViewController.h // UIWebView // // Created by octopus on 15-12-28. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import <UIKit/UIKit.h>@interface OCViewController : UIViewController <UIWebViewDelegate> //地址欄輸入框 引用 @property (strong, nonatomic) IBOutlet UITextField *textField; //網頁控件 引用 @property (strong, nonatomic) IBOutlet UIWebView *webView;//五個按鈕的點擊方法都回調該方法, 通過 tag 屬性來區分不同的按鈕 - (IBAction)click:(UIButton *)sender;@end
-- OCViewController.m :?
// // OCViewController.m // UIWebView // // Created by octopus on 15-12-28. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import "OCViewController.h"@interface OCViewController ()@end@implementation OCViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.//設置 UIWebView 網頁內容自適應self.webView.scalesPageToFit = YES;//設置 UIWebView 的委托self.webView.delegate = self;}- (void) webViewDidStartLoad:(UIWebView *)webView{ }- (void) webViewDidFinishLoad:(UIWebView *)webView{ }- (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{//生成對話框 顯示 加載失敗內容UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"加載失敗" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"確定" otherButtonTitles: nil];//顯示對話框[alertView show]; }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }- (IBAction)click:(UIButton *)sender {NSInteger tag = sender.tag;NSLog(@"tag : %d", tag);switch (tag) {case 0:{//加載網頁內容[self.textField resignFirstResponder];//獲取網頁地址NSString * address = self.textField.text;//將地址轉為 urlNSURLRequest * request = [NSURLRequest requestWithURL:[NSURL URLWithString:address]];//加載網頁內容[self.webView loadRequest:request];}break;case 1://后退[self.webView goBack];break;case 2://前進[self.webView goForward];break;case 3://重新加載[self.webView reload];break;case 4://停止加載[self.webView stopLoading];break;default:break;} } @end
-- 運行效果 :?
五. 工具條控件 (UIToolBar)
1. UIToolBar 控件屬性
UIToolBar 屬性截圖 :?
(1) Style 屬性?
Style 屬性 : 指定工具條風格;
-- Default : 默認風格;
-- Black : 黑色背景, 白字風格;
-- Black Translucent (Deprecated) : 透明背景;
(2) items 屬性
items 屬性 : 該 Item 是一個 NSArray 對象, 包含多個 BarButtonItem;
?
2. UIToolBar 工具條代碼示例
(1) 工具條代碼示例
代碼示例 :?
-- 界面設計文件 :?
-- OCViewController.h :?
// // OCViewController.h // UItoolBar // // Created by octopus on 15-12-29. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import <UIKit/UIKit.h>@interface OCViewController : UIViewController- (IBAction)click:(UIBarButtonItem *)sender;@end
-- OCViewController.m :?
// // OCViewController.m // UItoolBar // // Created by octopus on 15-12-29. // Copyright (c) 2015年 www.octopus.org.cn. All rights reserved. //#import "OCViewController.h"@interface OCViewController ()@end@implementation OCViewControllerUIProgressView * progress; NSTimer * timer;- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.//創建 UIToolBar 控件UIToolbar * toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 50, 320, 44)];[self.view addSubview:toolBar];//創建文字的 控件按鈕UIBarButtonItem * bi1 = [[UIBarButtonItem alloc] initWithTitle:@"Left" style:UIBarButtonItemStylePlain target:self action:@selector(clickCodeItem:)];//創建 圖片的 控件按鈕UIBarButtonItem * bi2 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"xcode.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(clickCodeItem:)];//創建 一個 系統的添加 按鈕UIBarButtonItem * bi3 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(clickCodeItem:)];//創建固定長度的空白UIBarButtonItem * bi4 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];//將進度條 封裝成 UIBarButtonItem 按鈕progress = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleBar];progress.frame = CGRectMake(0, 0, 80, 20);progress.progress = 0;UIBarButtonItem * bi5 = [[UIBarButtonItem alloc] initWithCustomView:progress];//將上面創建的按鈕添加到工具條中toolBar.items = [NSArray arrayWithObjects:bi1, bi2, bi3, bi4, bi5, nil];//啟動一個定時器, 更新進度條timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(changeProgress) userInfo:nil repeats:YES];}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }- (IBAction)click:(UIBarButtonItem *)sender {NSLog(@"tag : %d, tittle : %@", sender.tag, [sender title]); }- (void) clickCodeItem : (id)sender{NSLog(@"點擊 %@", sender); }- (void) changeProgress{if (progress.progress >= 1.0) {[timer invalidate];}else{[progress setProgress:progress.progress + 0.01 animated:YES];} }@end
-- 運行效果 :
2015-12-29 15:17:55.644 UItoolBar[2331:60b] 點擊 <UIBarButtonItem: 0x8c3b0d0> 2015-12-29 15:17:58.925 UItoolBar[2331:60b] 點擊 <UIBarButtonItem: 0x8c3a3d0> 2015-12-29 15:18:00.669 UItoolBar[2331:60b] 點擊 <UIBarButtonItem: 0x8c3c1a0> 2015-12-29 15:18:07.831 UItoolBar[2331:60b] tag : 1, tittle : Left 2015-12-29 15:18:09.446 UItoolBar[2331:60b] tag : 2, tittle : Center 2015-12-29 15:18:10.961 UItoolBar[2331:60b] tag : 3, tittle : Right
?
轉載注明出處?:?http://blog.csdn.net/shulianghan/article/details/50348982
總結
以上是生活随笔為你收集整理的【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【IOS 开发】基本 UI 控件详解 (
- 下一篇: 【Android应用开发】Android