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