UITextField詳解之一:UITextField基本屬性

UITextField是IOS開發中用戶交互中重要的一個控件,常被用來作帳號密碼框,輸入信息框等。建立一個用於輸入的UITextField其實很簡單,在平時使用中,更多的是須要 UITextField和其餘UI控件之間進行交互。程序員

一、UITextField的建立

建立一個UITextField其實很容易,代碼以下,只需2行就搞定了。api

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 100, 100, 30)];[self.view addSubview:textField];

但是這麼寫完,你會發現一個問題就是,我明明建立了UITextField,怎麼在視圖上看不到??緣由就是UITextField默認的背景色是ClearColor,固然咱們就看不到上面代碼所建立的UITextField了。那可能會想,改下UITextField的背景顏色,不就能夠看到了麼??那我們接下來就給UITextField添加一個背景色吧。學習

textField.backgroundColor = [UIColor redColor];

效果咱能夠看下:優化

TextField

額,這個樣式咱就先不要吐槽了⊙﹏⊙,至少,你要的UITextField已經出如今你的眼前了。點擊這個UITextField,系統會自動彈出鍵盤(是否是很神奇o(╯□╰)o)。有一個小細節就是,UITextField的高度,大蘋果認爲30最好看(若是你是用xib或者StoryBoard建立的話,你會看到你拖進去的UITextField的高度值是30,且沒法更改),既然我們老大以爲30最好看,那就通常狀況下就不要去改一些奇葩值,好比下面這款:ui

TF1

好很差看,仁者見仁咯。那我們平時見到的帶有圓角的UITextField是怎麼來的呢,有同窗可能想到了,修改UITextField的layer層的屬性cornerRadius,固然沒想到也沒關係。蘋果直接給UITextField提供了一個borderStyle的屬性。看這個名字就大概猜到了這是個枚舉類型的值了,那它都有哪些枚舉值呢??spa

typedef NS_ENUM(NSInteger, UITextBorderStyle) {    
UITextBorderStyleNone,    // 默認值,啥都沒有    
UITextBorderStyleLine,     // 線性邊框    
UITextBorderStyleBezel,    // 陰影效果邊框    
UITextBorderStyleRoundedRect  // 帶圓角的邊框};

上邊這些枚舉值,看名字是看不明白的,那就實踐一下唄:代理

textField.borderStyle = UITextBorderStyleRoundedRect;

此次不須要添加背景色,就能夠看到所建立的UITextField了(經過UITextField的layer層想要實現一樣的效果,還需設置borderWidth這一屬性)。code

二、UITextField的文本相關

既然我們前邊說了UITextField用於實現文本輸入,固然得有文本相關的屬性咯。第一個想到的就是UITextField有沒有text屬性呢??orm

textField.text = @"史上最牛逼的輸入框";

運行一下,我們會看到:ip

TF3

果真,UITextField是有text屬性的呢(哇靠,是否是以爲本身真特麼聰明…),好了,自戀完了,你有沒有發現一個問題,就是「bi」字及之後的字出不來了。這該怎麼辦呢??聰明如個人同窗已經想到了,是建立的UItextField的寬度不夠,加大寬度就行了嘛。

有些時候,好比咱們登陸QQ,帳號的輸入框中會有一行銷魂的字,告訴你,請輸入QQ號碼,密碼的輸入框中也有相似的提示。而且在你輸入的一瞬間,這個提示就消失了,而後把你輸入的內容刪除,它又出來了。那這個該怎麼實現呢??在textField裏面加一個label?點擊textField後去除這個label?可是在沒進行事後面的學習,你並不知道怎麼去實現它。偉大的蘋果給咱們提供了一個屬性,讓你只要用一行代碼就能夠作到在任何textField裏面添加提示文本(歡呼聲~~~)。不賣關子了,下面貼出代碼:

textField.placeholder = @"史上最帥的程序員";

運行效果:TF4

怎麼樣,是否是夠銷魂?

那既然有text屬性,就確定要有文本對齊方式之類的屬性咯,下面我們來逐一介紹下UITextField的經常使用屬性。

  • textField的文本對齊方式也僅僅只須要一行代碼來實現:

textField.textAlignment = NSTextAlignmentCenter;

這個textAlignment一樣是枚舉類型:

/* Values for NSTextAlignment */typedef NS_ENUM(NSInteger, NSTextAlignment) {    NSTextAlignmentLeft      = 0,    // Visually left aligned  左對齊#if TARGET_OS_IPHONE    NSTextAlignmentCenter    = 1,    // Visually centered   居中    NSTextAlignmentRight     = 2,    // Visually right aligned  右對齊#endif    NSTextAlignmentJustified = 3,    // Fully-justified. The last line in a paragraph is natural-aligned.       NSTextAlignmentNatural   = 4,    // Indicates the default alignment for script}
  • clearsOnBeginEditing這個屬性,默認爲NO,設置爲YES,是當你開始編輯的時候,就刪除textField裏面全部字符串。

  • keyboardType,設置textField的彈出鍵盤類型,也是一個枚舉值。

typedef NS_ENUM(NSInteger, UIKeyboardType) { UIKeyboardTypeDefault, // Default type for the current input method. UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active  支持ASCII的默認鍵盤 UIKeyboardTypeNumbersAndPunctuation, // Numbers and assorted punctuation.  數字+符號 UIKeyboardTypeURL, // A type optimized for URL entry (shows . / .com prominently).  URL鍵盤,支持.com按鈕 只支持URL字符 UIKeyboardTypeNumberPad, // A number pad (0-9). Suitable for PIN entry. 數字鍵盤 UIKeyboardTypePhonePad, // A phone pad (1-9, *, 0, #, with letters under the numbers). 撥號鍵盤 UIKeyboardTypeNamePhonePad, // A type optimized for entering a person's name or phone number. 電話鍵盤,也支持輸入人名 UIKeyboardTypeEmailAddress, // A type optimized for multiple email address entry (shows space @ . prominently).  可輸入郵箱地址的鍵盤 UIKeyboardTypeDecimalPad NS_ENUM_AVAILABLE_IOS(4_1), // A number pad with a decimal point.  帶有小數點的數字鍵盤 UIKeyboardTypeTwitter NS_ENUM_AVAILABLE_IOS(5_0), // A type optimized for twitter text entry (easy access to @ #)    優化的鍵盤,方便輸入@、#字符 UIKeyboardTypeWebSearch NS_ENUM_AVAILABLE_IOS(7_0), // A default keyboard type with URL-oriented addition (shows space . prominently).  UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated };
  • autocapitalizationType,設置輸入框輸入的首字母是否大寫

//首字母是否大寫 textField.autocapitalizationType = UITextAutocapitalizationTypeNone;

依舊是枚舉值:

typedef enum { UITextAutocapitalizationTypeNone, // 不自動大寫 UITextAutocapitalizationTypeWords, // 單詞首字母大寫 UITextAutocapitalizationTypeSentences, // 句子的首字母大寫 UITextAutocapitalizationTypeAllCharacters,  // 全部字母都大寫} UITextAutocapitalizationType;
  • returnKeyType返回鍵類型

//return鍵變成什麼鍵 text.returnKeyType =UIReturnKeyDone;

仍是枚舉值:

typedef NS_ENUM(NSInteger, UIReturnKeyType) { UIReturnKeyDefault,  // 默認 灰色按鈕,標有Return UIReturnKeyGo,   //  標有Go的藍色按鈕 UIReturnKeyGoogle, // 標有Google的藍色按鈕,用於搜索 UIReturnKeyJoin,  // 標有Join的藍色按鈕 UIReturnKeyNext,  // 標有Next的藍色按鈕 UIReturnKeyRoute, // 標有Route的藍色按鈕 UIReturnKeySearch, // 標有Search的藍色按鈕 UIReturnKeySend, // 標有Send的藍色按鈕 UIReturnKeyYaho

上面的不少枚舉值,僅僅是顯示的文字不一樣,具體實現什麼功能,還須要在下面的學習中涉及到。如今我們只須要知道鍵盤上顯示Go,我也能夠用它去實現Done的功能,這上面的文字只是給用戶一個提示。

三、總結

這一章,僅僅介紹了一些UITextField的基本的經常使用屬性,熟練掌握這些屬性的使用,能夠爲咱們接下來的學習打下很好的基礎,下一章節,我們開始講解UITextField的代理方法,也是UITextField能具體到開發中,比較重要的一些方法。

o, // 標有Yahoo的藍色按鈕 UIReturnKeyDone, // 標有Done的藍色按鈕 UIReturnKeyEmergencyCall,  // 緊急呼叫按鈕 UIReturnKeyContinue NS_ENUM_AVAILABLE_IOS(9_0),  // 標有Continue的藍色按鈕;
相關文章
相關標籤/搜索