iOS開發-UI 從入門到精通(四)

1、UITextField設計模式

一、UITextField是什麼?ide

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

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

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

二、如何使用UITextField?spa

(1)建立UITextField與建立UILabel的步驟很類似。設計

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

  ②設置文本顯示、輸入相關的屬性;code

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

  ④釋放。

三、UITextField使用示例:

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

  userNameTextField.borderStyle =UITextBorderStyleRoundedRect;

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

  [containerView addSubview:userNameTextField];

  [userNameTextField release];

四、UITextField更多:

(1)UITextField核心功能主要包含3個方面:

  ①文本顯示 ②輸入控制 ③外觀配置

五、文本顯示:

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

  

六、輸入控制:

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

  

七、外觀控制:

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

  

2、UIButton

一、UIButton是什麼?

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

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

二、如何使用UIButton?

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

  ①建立button對象(若是本類有初始化方法,使用本身的;不然使用父類的);

  ②設置按鈕顯示相關的屬性;

  ③爲按鈕添加點擊事件;

  ④添加按鈕到父視圖上,用以顯示;

  ⑤按鈕無需釋放(由於使用的是類方法建立的button)。

三、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];

四、UIButton添加事件:

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

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

  

五、外觀控制:

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

  

  

六、小節:

(1)UIView是全部可視化控件的基類;

(2)UILabel、UITextField、UIButton是具備特定外觀特定功能的視圖;

(3)UILabel側重於文本的呈現;

(4)UITextField側重於輸入;

(5)UIButton側重於點擊事件處理。

3、delegate

一、點return回收鍵盤:

(1)點擊鍵盤return按鈕實現鍵盤迴收的步驟:

  ①將AppDelete做爲UITextField的delegate;

  ②AppDelete.h文件接受UITextFieldDelegate協議;

  ③AppDelete.m文件實現textFieldShouldReturn:方法)。

二、鍵盤迴收代碼:

AppDelegate.m

1 - (BOOL)textFieldShouldReturn:(UITextField *)textField
2 {
3     [textField resignFirstResponder];
4 
5     return YES;
6 }

三、小節:

(1)UITextField不該該在類內部(.m文件)實現textFieldShouldReturn:, 由於有時候,咱們點return的時候,並不老是想回收鍵盤,例如:有兩個輸入框,第一個輸入框輸入完成以後,用戶點return按鈕,將光標移動到第二個輸入框(即:第二個輸入框稱爲第一響應者);

(2)對於一個V來講,本身只負責觸發事件,事件由外界實現,即 delegate。

4、iOS程序啓動流程

一、mian函數是程序入口:

(1)任何一個程序,不管是基於Mac OS仍是iOS,程序都是從main.m文件的main函數開始執行的。

二、UIApplicationMain:

(1)UIApplicationMain在程序入口函數main函數中調用,主要實現了3個功能:

  ①建立應用程序(UIApplication)實例;

  ②建立應用程序代理實例;

  ③創建事件循環(runloop:死循環,不斷檢測程序運行狀態,是否被觸摸、晃動等)。

三、UIApplicationMain剖析:

int UIApplicationMain (

   int argc;

   char *argv[];

   NSString *principalClassName;

   NSString *delegateClassName

);

(1)principalClassName:應用程序對象的類名(UIApplication或其子類);

(2)delegateClassName:應用程序delegate的類名。(任何接受了 UIApplicationDelegate的類)! UIApplicationMain根據上述兩個類名建立應用程序實例、應用程序代理實例。而後創建事件循環(runloop),檢測程序的各類事件(程序開始啓動,接收到觸 摸等等)。

四、應用程序代理:

(1)應用程序代理,主要檢測應用程序的狀態並作出相應的處理;

(2) 應用程序的狀態有不少,好比:程序啓動、進入活躍狀態、進到後臺、內存警告、收到遠程消息等等;

(3)任何接受了UIApplicationDelegate協議的對象均可以成爲應用程序代理;

(4)一旦應用程序的某種狀態觸發,就會執行相應的代理方法。

五、UIApplicationDelegate:

  UIApplicationDelegate是一個OC的協議。裏面聲明瞭一堆方法,這些方法都與應用程序運行狀態有關,它們由應用程序代理實現。UIApplication 對象負責調用。(詳見下表)

  

六、UIWindow:

(1)UIWindow做爲應用程序的窗口,在應用程序啓動的時候就要加載,各類UI界面都是藉助window來呈現的;

(2)UIWindow在建立的時候,應該和屏幕同樣大。經過[UIScreen mainScreen].bounds能夠得到屏幕大小;

(3)[self.window makeKeyAndVisible];//讓window變的可視,即顯示 window。

5、總結

(1)UILabel、UITextField、UIButton都是特別經常使用的控件;

(2)他們都是直接或者間接繼承於UIView,只是外觀和功能不一樣;

(3)熟悉各類控件的特色和方法是咱們後期作項目的保障;

(4)delegate是iOS重要的設計模式,理解它的原理,有助於寫出優質代碼;

(5)main函數是程序的入口。UIApplicationMain函數建立了應用程序實例,應 用程序代理實例,創建事件循環。

6、下一篇將持續更新配套知識點練習;

 Email:dingding3w@126.com

相關文章
相關標籤/搜索