目標
回顧基本組件窗口和視圖
了解 IOS UIKit 框架中常用視圖組件
顯示控件-標簽 UILabel
顯示控件-文本框控件 UITextField
控制控件-按鈕 UIButton
控制控件-開關 UISwitch
控制控件-滑塊 UISlider
其他控件-分段控件、分頁控件
1、回顧基本組件窗口和視圖
UIWindow
一個應用程序只有一個窗口,為UIWindow的實例
初始邊框為整個屏幕的大小
支持窗口層疊放置
UIView
一個窗口,多個視圖
視圖負責屏幕的一塊顯示區域
視圖可以嵌套
一個視圖可以有多個子視圖
響應用戶觸摸事件
UIImageView
專門保管圖片的視圖
2、了解 IOS UIKit 框架中常用組件
視圖類組件
容器
為視圖內容提供額外的視覺分隔
//////
窗口
提供繪制的場所UIWindow
顯示視圖
用於簡單的信息顯示
UILabel、UITextView
UIImageView
警告視圖和動作表單
取得用戶的注意
UIAlertView
UIActionSheet
導航視圖
為用戶提供從一個屏幕到另一個屏幕的導航工具
UITabBar
UINavigationBar
表格視圖
專門用於顯示數據的視圖
UITableView
選取器視圖
用滾輪的方式讓選擇數據的
UIPickerView
圖像視圖
放置圖片的視圖容器,透明框
UIImageView
滾動視圖
UIScrollView
文本視圖
UITextView
3、顯示控件-標簽UILabel
UILabel
只讀視圖,顯示一行或多行文本
(1)創建
CGRect labelFrame = CGRectMake(0, 10, 100, 50);
UILabel *myLabel = [[UILabel alloc]initWithFrame:labelFrame];
(2)設置顏色
myLabel.backgroundColor = [UIColor clearColor];
myLabel.textColor = [UIColor redColor];
(3)設置字體
myLabel.font = [UIFontfontWithName:@"Verdana" size:18.0];
(4)設置多行文本
myLabel.numberOfLines = 2;
myLabel.text = @"Hello World\nSecond line";
(5)添加到視圖
[self.view addSubview: myLabel];
(6)釋放
[myLabelrelease];
4、顯示控件-文本框控件 UITextField
進行小段文本的輸入,一般單行;
(1)創建
CGRect textRect = CGRectMake(10,10,300,31);
UITextField *myTextField = [[UITextField alloc]initWithFrame:textRect];
myTextField.backgroundColor = [UIColorwhiteColor];
(2)設置字體
myTextField.font = [UIFontsystemFontOfSize:22.0];
myTextField.adjustsFontSizeToFitWidth = YES;
myTextField.minimumFontSize = 2.0;
(3)添加協議、控制動作
@interface MyUIControlViewController :UIViewController<UITextFieldDelegate>
綁定代理對象
- (void)viewDidLoad
{
……
myTextField.delegate= self;
}
(4)取消鍵盤
- (BOOL)textFieldShouldReturn:(UITextField*)textField
{
[textFieldresignFirstResponder];
returnYES;
}
(5)輸入長度判斷
- (BOOL)textField:(UITextField *)textFieldshouldChangeCharactersInRange
:(NSRange)rangereplacementString:(NSString *)string
{ intMAX_CHARS = 10;
NSMutableString*newText = [NSMutableString stringWithString: textField.text];
[newTextreplaceCharactersInRange: range withString:string];
return([newText length] <= MAX_CHARS);
}
5、控制控件-按鈕 UIButton
創建按鈕
------------------------------------------------------------------------------------------------------------------------------
使用 IB 完成:
(1)創建一個 View ,生成三個文件xxxViewController.xib、xxxViewController.h、xxxViewController.m、
(2)如果使用 圖形化工具,打開 xxxViewController.xib ,從“對象庫”中拖拽控件到 View 視圖中,並通過“屬性檢查器” 設置按鈕屬性。
如果需要對按鈕進行事件處理,需要在xxx.ViewController.h 文件中創建一個處理按鈕事件的 IBAction 方法,並在 IB中,拖線 連接 按鈕和IBAction.
- (IBAction)buttonPress:(UIButton *)sender;
對按鈕事件的處理一般在 xxxViewController.m 文件中,對應的 IBAction 方法中編寫。
- (IBAction)buttonPress:(UIButton *)sender {
//創建一個彈出提示框,
UIAlertView*alert = [[UIAlertViewalloc]
initWithTitle:@"提示標題"
message:@"通過xib實現的按鈕處理方法"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
//顯示彈出提示框
[alert show];
}
------------------------------------------------------------------------------------------------------------------------------
(3)如果使用純代碼編寫,打開 xxxViewController.h,創建按鈕對象作為 @propertity 屬性
@property (nonatomic, retain, readonly) UIButton *roundedButtonType;
然後,在 xxxViewController.m 文件中編寫代碼:
在 - (void)viewDidLoad 方法中編寫創建 按鈕的代碼 如下所示
//通過代碼創建一個 Button
roundedButtonType= [UIButtonbuttonWithType:UIButtonTypeRoundedRect];
//設置按鈕的位置和尺寸,前兩個參數設置 頂點坐標,後兩個參數設置 寬、高
roundedButtonType.frame = CGRectMake(50.0, 250.0, 88.0 , 48.0);
//設置按鈕的標題和狀態
[roundedButtonType setTitle:@"Rounded" forState:UIControlStateNormal];
//設置按鈕的背景顏色
roundedButtonType.backgroundColor = [UIColor clearColor];
//設置用戶對 按鈕進行何種操作,處理按鈕事件的操作(回調函數)
[roundedButtonType addTarget:self
action:@selector(action:)
forControlEvents:UIControlEventTouchUpInside];
//設置按鈕的編號,便於區分多個按鈕
roundedButtonType.tag = 2;
需要單獨為按鈕事件處理編寫方法,一般都叫 xxxAction:
- (void)action:(id)sender
{
//創建一個彈出提示框,
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"提示標題"
message:@"通過純編碼實現的按鈕處理方法"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
//顯示彈出提示框
[alert show];
}
------------------------------------------------------------------------------------------------------------------------------
自定義按鈕
(1)創建帶有圖片的按鈕
[myButton setImage:[UIImageimageNamed:@"myButtonImage.png"]
forState:UIControlStateNormal];
6、控制控件-開關 UISwitch
創建開關
初始化
CGRect switchRect = CGRectMake(120,50,0,0);
UISwitch *mySwitch = [[UISwitch alloc]initWithFrame:switchRect];
添加事件處理
[mySwitch addTarget: self
action:@selector(switchAction:)
forControlEvents: UIControlEventValueChanged];
切換開關
[mySwitch setOn:YES animated:YES];
修改開關外觀
獲得開關的兩個Label
UIView *mainView = [[[[mySwitch subviews]objectAtIndex:0] subviews] objectAtIndex:2];
UILabel *onLabel = [[mainView subviews]objectAtIndex:0];
UILabel *offLabel = [[mainView subviews]objectAtIndex:1];
修改字體和顏色
onLabel.text = @"YES";
offLabel.text = @"NO";
onLabel.textColor = [UIColor yellowColor];
offLabel.textColor = [UIColor greenColor];
7、控制控件-滑塊 UISlider
創建
CGRect sliderRect = CGRectMake(20,50,280,40);
UISlider *mySlider = [[UISlider alloc]initWithFrame: sliderRect];
mySlider.minimumValue = 0;
mySlider.maximumValue = 100;
mySlider.continuous = YES;
……
處理滑動事件
-(void)sliderAction:(id)sender
{
intstepAmount = 10;
floatstepValue = (abs([(UISlider *)sender value]) / stepAmount) * stepAmount;
[sendersetValue: stepValue];
lblSliderValue.text= [NSString stringWithFormat: @"%d", (int)stepValue];
}