之前,對於UITextField的使用沒有具體的研究,有些時候總感覺用起來有局限性,其即時有些屬性之前不知道,今天對於UITextField做下總結。 一、邊框的顯示 1、系統預設的邊框
UITextField *textFieldSystem = [[UITextField alloc] initWithFrame:CGRectMake(10, 50, self.view.frame.size.width-20, 30)];textFieldSystem.placeholder = @"請輸入文字";textFieldSystem.borderStyle = UITextBorderStyleRoundedRect; //設定邊框的類型[self.view addSubview:textFieldSystem];
UITextBorderStyle 邊框類型是一個枚舉,總共有4種類型,預設的是UITextBorderStyleNone 無邊框類型,所以我們建立的時候需要給其設定邊框的類型,否則什麼都看不到。
typedef NS_ENUM(NSInteger, UITextBorderStyle) { UITextBorderStyleNone, UITextBorderStyleLine, UITextBorderStyleBezel, UITextBorderStyleRoundedRect};
2、自訂的邊框
如果,你覺得系統內建的UITextField滿足不了你的需求,比如說你的圓角效果要更大些,或者你要把邊框的顏色設定成紅色的,那麼你就需要自訂UITextField的邊框了。
(1)建立一個類,叫做YCTextField,整合於UITextField,用於重寫UITextField的一些方法。
#import "YCTextField.h"@implementation YCTextField//重寫來重設預留位置地區- (CGRect)placeholderRectForBounds:(CGRect)bounds{ return CGRectInset(bounds, 8, 4);}//重寫來重設邊緣地區- (CGRect)textRectForBounds:(CGRect)bounds{ return CGRectInset(bounds, 18,4);}//重寫來重設編輯地區- (CGRect)editingRectForBounds:(CGRect)bounds{ return CGRectInset(bounds, 20, 4);}
小編,從官方文檔裡面看到有這幾個方法很是開森,拷貝過來就想直接用。結果一直看不到效果,後面才發現,蘋果官方文檔裡面特別說明了,這些方法需要重寫不能直接調用。
(2) 自訂邊框的屬性
記得,匯入標頭檔YCTextField.h
YCTextField *textField = [[YCTextField alloc] initWithFrame:CGRectMake(10, 100, self.view.frame.size.width-20, 40)]; textField.placeholder = @"請輸入文字"; textField.layer.borderColor = [UIColor redColor].CGColor; //設定邊框的顏色 textField.layer.borderWidth = 1.0f; //設定邊框的寬度 textField.layer.cornerRadius = 12.0f; //設定邊框的圓角大小 [self.view addSubview:textField];
二、其他的屬性
1、設定輸入框中的叉號
textFieldSystem.clearButtonMode = UITextFieldViewModeWhileEditing;
UITextFieldViewMode 是一個枚舉類型
typedef NS_ENUM(NSInteger, UITextFieldViewMode) { UITextFieldViewModeNever, UITextFieldViewModeWhileEditing, UITextFieldViewModeUnlessEditing, UITextFieldViewModeAlways};
2、設定鍵盤的類型
textFieldSystem.keyboardType = UIKeyboardTypeNumberPad;
UIKeyboardType 是一個枚舉類型
typedef enum { UIKeyboardTypeDefault, 預設鍵盤,支援所有字元 UIKeyboardTypeASCIICapable, 支援ASCII的預設鍵盤 UIKeyboardTypeNumbersAndPunctuation, 標準電話鍵盤,支援+*#字元 UIKeyboardTypeURL, URL鍵盤,支援.com按鈕 只支援URL字元 UIKeyboardTypeNumberPad, 數字鍵台 UIKeyboardTypePhonePad, 電話鍵盤 UIKeyboardTypeNamePhonePad, 電話鍵盤,也支援輸入人名 UIKeyboardTypeEmailAddress, 用於輸入電子 郵件地址的鍵盤 UIKeyboardTypeDecimalPad, 數字鍵台 有數字和小數點 UIKeyboardTypeTwitter, 最佳化的鍵盤,方便輸入@、#字元 UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, } UIKeyboardType;