UITextField 的重寫

       在不少產品設計的時候,產品設計人員設計出來的輸入框總會要求,文字的內容距離作邊框多少像素,編輯區域的其實點,距離左邊多少像素,不少人絕的難以適應!其實這些都不存在很大的技術難度,一下這些方式均可以達到這樣的一個目的:spa

  1.邊框用一個圖片,而後在圖片上添加隱形的UITextFied,更改輸入框的大小,位置,這樣經過障眼法就能夠達到產品設計的要求。設計

  2.UITextField 是有leftView這樣的一個功能,那麼就能夠在左邊添加一個全透明的view.用以邊框個輸入區域的隔離。也能夠達到對應的產品設計要求code

  3.最好的一種方式,固然是一勞永逸的方式,也就是重寫UITextField.經過重寫其對應的方法,而後在後續的過程當中,能夠很方便的使用,在這裏主要是描述這樣的一個寫法,。圖片

  示例的要求主要以下:輸入區域必須距離作邊框的距離爲10像素。重寫UITextFiled.以下:開發

 

#import <UIKit/UIKit.h>產品

 

@interface HJUITextField : UITextFieldit

 

@endio

 

#import "HJUITextField.h"class

 

@implementation HJUITextFieldimport

 

- (id)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        // Initialization code

    }

    returnself;

}

 

 

-(CGRect)textRectForBounds:(CGRect)bounds{

    return CGRectInset(bounds, 10, 0);

}

 

-(CGRect)editingRectForBounds:(CGRect)bounds{

    return CGRectInset(bounds, 10, 0);

}

 

@end

從上面能夠看出,咱們主要是重寫了UITextField的兩個方法,分別爲:

-(CGRect)textRectForBounds:(CGRect)bounds

-(CGRect)editingRectForBounds:(CGRect)bounds

 

在兩個方法中咱們分別返回編輯的區域和文本顯示的區域,經過重寫這兩個方法很好的知足了產品設計的要求。固然UITextField還有其它的一些方法。如

 (CGRect)borderRectForBounds:(CGRect)bounds;

- (CGRect)textRectForBounds:(CGRect)bounds;

- (CGRect)placeholderRectForBounds:(CGRect)bounds;

- (CGRect)editingRectForBounds:(CGRect)bounds;

- (CGRect)clearButtonRectForBounds:(CGRect)bounds;

- (CGRect)leftViewRectForBounds:(CGRect)bounds;

- (CGRect)rightViewRectForBounds:(CGRect)bounds;

 

- (void)drawTextInRect:(CGRect)rect;

- (void)drawPlaceholderInRect:(CGRect)rect;

經過重寫這些方法,對應的一些特殊的產品設計要求基本上都能實現,這種方法的好處在於,一個產品在視覺上不少時候都是統一的。也就是說在產品開發的初期,若是重寫這些方法,在後續的使用過程當中,很方便的重複使用

相關文章
相關標籤/搜索