iOS第五章控制項和動作

來源:互聯網
上載者:User

目標

      回顧基本組件視窗和視圖

    瞭解 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]; 

}

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.