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


一、UITextField

1、UITextField是什么?

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

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

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

2、如何使用UITextField?

(1)創建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更多:

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

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

5、文本顯示:

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

  

6、輸入控制:

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

  

7、外觀控制:

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

  

二、UIButton

1、UIButton是什么?

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

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

2、如何使用UIButton?

(1)創建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添加事件:

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

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

  

5、外觀控制:

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

  

  

6、小節:

(1)UIView是所有可視化控件的基類;

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

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

(4)UITextField側重於輸入;

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

三、delegate

1、點return回收鍵盤:

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

  ①將AppDelete作為UITextField的delegate;

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

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

2、鍵盤回收代碼:

AppDelegate.m

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

3、小節:

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

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

四、iOS程序啟動流程

1、mian函數是程序入口:

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

2、UIApplicationMain:

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

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

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

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

3、UIApplicationMain剖析:

int UIApplicationMain (

   int argc;

   char *argv[];

   NSString *principalClassName;

   NSString *delegateClassName

);

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

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

4、應用程序代理:

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

(2) 應用程序的狀態有很多,比如:程序啟動、進入活躍狀態、進到后台、內存警告、收到遠程消息等等;

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

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

5、UIApplicationDelegate:

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

  

6、UIWindow:

(1)UIWindow作為應用程序的窗口,在應用程序啟動的時候就要加載,各種UI界面都是借助window來呈現的;

(2)UIWindow在創建的時候,應該和屏幕一樣大。通過[UIScreen mainScreen].bounds可以獲得屏幕大小;

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

五、總結

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

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

(3)熟悉各種控件的特點和方法是我們后期做項目的保障;

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

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

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

 Email:dingding3w@126.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM