目標
回顧基本組件視窗和視圖
瞭解 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];
}