iOS UI控件瞭解一下

在iOS開發及測試中,除了業務邏輯和算法以外,UI控件是最重要的一部分,所以熟悉UI控件及實現原理,對於瞭解開發實現和測試是至關必要的,這篇文章將給你們介紹經常使用的UI控件及實現。
ios

UI相關概念
算法

1. UI微信

UI(User Interface)用戶界面,即用戶能看到的各類各樣的頁面元素,iOS App 主要是由各類各樣的UI控件加業務邏輯和算法構成,想要開發出一款精美的應用程序,須要熟練掌握各類各樣UI控件的用法。app

2. UIWindow編輯器

widow是窗口,每一個app都須要藉助window將內容展示給用戶看,在iOS中,使用UIWindow類來表示窗口,一般一個應用程序只建立一個UIWindow對象;ide

建立window示例代碼:self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];函數

window如何呈現內容?下面咱們將引入UIView;學習

3. UIView測試

view(視圖)表明屏幕上的一個矩形區域。iOS中用UIView來表示視圖,App中能看到的元素,都是UIView及其子類,通俗的說各類UI控件都屬於view,不一樣的控件表明不一樣種類的view。iOS中全部能看到的內容都是view或其子類。字體

建立view的步驟以下:

開闢空間並初始化視圖(初始化時,給出視圖位置和大小)

對視圖作一些設置(好比:背景顏色)

將視圖添加到window上進行顯示

釋放視圖對象

視圖建立代碼:

UIView *blueView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 120, 100)];

blueView.backgroundColor = [UIColor blueColor];

[self.window addSubview:blueView];

[blueView release];

UIView做爲全部可視化控件的BaseClass,提供了許多屬性和方法:顯示效果控制(frame、alpha等)、視圖添加和移除(addSubview: 等)、視圖層次調整(bringSubviewToFront:等)等。

4. UIView的屬性frame、bounds、center

1)frame:描述當前視圖在其父視圖中的位置和大小;

frame是一個結構體,包含2部份內容:origin和size。origin也是一個結構體,包含2部份內容:x和y(ios座標系以左上角爲座標原點(0,0),以原點向右側爲X軸正方向,原點下側爲Y軸正方向);size一樣是一個結構體,包含2部份內容:width和height,frame的origin和size是相對於父視圖來講的。CGRectMake()函數能夠幫咱們快速構造一個CGRect變量。

-(CGRect)frame{

  return CGRectMake(self.frame.origin.x,self.frame.origin.y,self.frame.size.width,self.frame.size.height);

}

2)bounds:描述當前視圖在其自身座標系統中的位置和大小;

bounds(邊界)同frame同樣是一個CGRect結構體變量。當一個view設置bounds時,會把本身當成一個容器,定義本身的邊界大小以及左上角的初始座標。當子視圖添加到此視圖時,會根據bounds指定的原點(0,0)計算frame,而非左上角。

-(CGRect)bounds{

  return CGRectMake(0,0,self.frame.size.width,self.frame.size.height);

}

3)center:描述當前視圖的中心點在其父視圖中的位置;

center(中心點)也是個結構體,包含2個部分:x和y,center與frame有着密切的聯繫。

center.x = frame.origin.x + frame.size.width/2;

center.y = frame.origin.y + frame.size.height/2;

bounds和frame和center有着微妙的聯繫(詳見下圖):

5. UIView的操做方法

1)添加視圖

UIView的addSubview:方法能夠添加子視圖,對於同一個視圖的全部子視圖來說,後添加的子視圖會把已加的子視圖蓋在下面。

UIView提供了其餘添加視圖的方法(詳見下表):

2)管理視圖層次

UIView除了提供添加視圖的方法,還提供了管理視圖層次的方法(詳見下表):

3)視圖重要屬性

UIView做爲其餘UI控件的BaseClass,提供了不少屬性(詳見下表):

經常使用UI控件介紹

UIView其實就是承載各類控件的一個容器,不少的控件都繼承於UIView,只要繼承UIView的控件,那麼就相應的繼承了UIView的各類屬性,能夠說UIView是視圖控件之父。

下表是經常使用UI控件一覽表:

下面詳細介紹幾種最經常使用的控件及屬性:

1. UILabel

1)UILabel是什麼?

(1)UILabel(標籤):是顯示文本的控件,在App中UILabel是出現頻率最高的控件。

(2)UILabel是UIView子類,做爲子類通常是爲了擴充父類的功能,UILabel擴展了文字顯示的功能,UILabel是能顯示文字的視圖。

2 )如何使用UILabel?

(1)建立UILabel與建立UIView的步驟很類似。

      ①開闢空間並初始化(若是本類有初始化方法,使用本身的;不然使用父類的)。

      ②設置文本控制相關的屬性。

      ③添加到父視圖上,用以顯示。

      ④釋放。

(2)視圖建立代碼:

  UILabel *userNameLabel = [[UILabel alloc]initWithFrame:CGRectMake(30, 100, 100, 30)];

    userNameLabel.text = @"用戶名";

    [containerView addSubview:userNameLabel]; 

    [userNameLabel release];

3 )如何控制文本顯示?
        UILabel的主要做用是顯示一段文本,所以提供了不少與顯示文本相關的API(詳見下表)

2. UITextField

1)UITextField是什麼?

(1)UITextField(輸入框):是控制文本輸入和顯示的控件。在App中UITextField出現頻率也比較高;

(2)iOS系統藉助虛擬鍵盤實現輸入,當點擊輸入框,系統會自動調出鍵盤,方便 你進一步操做。在你不須要輸入的時候,可使用收回鍵盤的方法,收回彈出的鍵盤;

(3)UITextField和UILabel相比,UILabel主要用於文字顯示,不能編輯, UITextField容許用戶編輯文字(輸入)。

2 )如何使用UITextField?
        建立UITextField與建立UILabel的步驟很類似。
        ①開闢空間並初始化(若是本類有初始化方法,使用本身的;不然使用父類的);
        ②設置文本顯示、輸入相關的屬性;
        ③添加到父視圖上,用以顯示;
        ④釋放;
3 )UITextField使用示例:

UITextField *userNameTextField = [[UITextField alloc]initWithFrame:CGRectMake(100, 100, 190, 30)];

userNameTextField.borderStyle =UITextBorderStyleRoundedRect;

userNameTextField.placeholder = @"手機號/郵箱";

[containerView addSubview:userNameTextField];

[userNameTextField release];

4 )UITextField更多

UITextField核心功能主要包含3個方面: ①文本顯示 ②輸入控制 ③外觀配置。

5 )文本顯示:

UITextField提供了許多API方便咱們控制文本的顯示,包括字體顏色、對齊方式、佔位符等等(詳見下表)

6 )輸入控制:

UITextField類提供了許多控制輸入的API,包括密碼模式、鍵盤樣式、自定義鍵盤等(詳見下表)

7 )外觀控制:

UITextField一樣提供了外觀控制的API,包括邊框樣式、清除按鈕、輔助視圖等;

3. UIButton

1 )UIButton是什麼?

(1)UIButton(按鈕):是響應用戶點擊的控件。在App中UIButton是出現頻率很高的控件;

(2)UIButton與UILabel、UITextField側重點不一樣,側重於處理點按。固然UIButton類也提供了一些方法控制按鈕外觀。

2 )如何使用UIButton?
        創 建UIButton與建立UILabel、UITextField、UIView的步驟很類似。
        ①建立button對象(若是本類有初始化方法,使用本身的;不然使用父類的);
        ②設置按鈕顯示相關的屬性;
        ③爲按鈕添加點擊事件;   
        ④添加按鈕到父視圖上,用以顯示;
        ⑤按鈕無需釋放(由於使用的是類方法建立的button)。
3 )UIButton使用示例:
        UIButton *loginButton = [UIButton  buttonWithType:UIButtonTypeSystem];
        loginButton.frame = CGRectMake(30, 200, 60, 30);
        [loginButton setTitle:@"登陸" forState:UIControlStateNormal];
 [loginButton addTarget:self action:@selector(login:) forControlEvents:UIControlEventTouchUpInside];
        [containerView addSubview:loginButton];
4 )UIButton添加事件:

UIButton從父類UIControl那繼承了控制相關的方法,好比添加事件、移除事件等。

注:UIButton : UIControl : UIView(詳見下表)

5 )外觀控制:

UIButton提供了外觀控制的API。包括標題、背景圖片、前景圖片等(詳見下表)

總結

該文主要分享了UI相關的概念,重點介紹了全部可視化控件的基類UIView及其屬性和相關方法,並詳細介紹3個最多見的UI控件-UILabel(標籤)、UITextField(輸入框)、UIButton(按鈕)的屬性及其使用,其餘控件的使用都是相似的,瞭解了各類UI控件的屬性及開發使用以後,就能夠在測試用例設計及UI相關測試中,更精準地設計測試用例,針對每一類UI控件根據其屬性設計特定的測試方法。


本次就先記錄這麼多,下一次再見。

但願你們能有所收穫,一塊兒進步、互相學習!

搜狗測試微信號:Qa_xiaoming

搜狗測試QQ粉絲羣:459645679




本文分享自微信公衆號 - 搜狗測試(SogouQA)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索