UITextField使用解析

UITextField 是用戶交互的一個必備使用的控件,其使用頻率較高。函數

1自定義UITextField字體

咱們有時須要定製化UITextField對象的風格,能夠添加許多不一樣的重寫方法,來改變文本字段的顯示行爲。這些方法都會返回一個CGRect結構,制定了文本字段每一個部件的邊界範圍,甚至修改placeHolder顏色,字體。spa


– textRectForBounds:      //重寫來重置文字區域orm

– drawTextInRect:         //改變繪文字屬性.重寫時調用super能夠按默認圖形屬性繪製,若本身徹底重寫繪製函數,就不用調用super.對象

– placeholderRectForBounds:  //重寫來重置佔位符區域繼承

– drawPlaceholderInRect:  //重寫改變繪製佔位符屬性.重寫時調用super能夠按默認圖形屬性繪製,若本身徹底重寫繪製函數,就不用調用super圖片

– borderRectForBounds:  //重寫來重置邊緣區域it

– editingRectForBounds:  //重寫來重置編輯區域方法

– clearButtonRectForBounds:  //重寫來重置clearButton位置,改變size可能致使button的圖片失真margin

– leftViewRectForBounds:

– rightViewRectForBounds:


經過– drawPlaceholderInRect:方法可改變placeHolder顏色、字體,請看代碼:

首先定義一個類CustomTextField讓它繼承UITextField實現如下方法便可:

//控制清除按鈕的位置

-(CGRect)clearButtonRectForBounds:(CGRect)bounds

{

   return CGRectMake(bounds.origin.x + bounds.size.width - 50, bounds.origin.y + bounds.size.height -201616);

}


//控制placeHolder的位置,左右縮20

-(CGRect)placeholderRectForBounds:(CGRect)bounds

{

    

    //return CGRectInset(bounds, 20, 0);

   CGRect inset = CGRectMake(bounds.origin.x+100, bounds.origin.y, bounds.size.width -10, bounds.size.height);//更好理解些

   return inset;

}

//控制顯示文本的位置

-(CGRect)textRectForBounds:(CGRect)bounds

{

    //return CGRectInset(bounds, 50, 0);

    CGRect inset = CGRectMake(bounds.origin.x+190, bounds.origin.y, bounds.size.width -10, bounds.size.height);//更好理解些

    

    return inset;


}

//控制編輯文本的位置

-(CGRect)editingRectForBounds:(CGRect)bounds

{

    //return CGRectInset( bounds, 10 , 0 );

    

   CGRect inset = CGRectMake(bounds.origin.x +10, bounds.origin.y, bounds.size.width -10, bounds.size.height);

   return inset;

}

//控制左視圖位置

- (CGRect)leftViewRectForBounds:(CGRect)bounds

{

   CGRect inset = CGRectMake(bounds.origin.x +10, bounds.origin.y, bounds.size.width-250, bounds.size.height);

   return inset;

    //return CGRectInset(bounds,50,0);

}


//控制placeHolder的顏色、字體

- (void)drawPlaceholderInRect:(CGRect)rect

{

    //CGContextRef context = UIGraphicsGetCurrentContext();

    //CGContextSetFillColorWithColor(context, [UIColor yellowColor].CGColor);

    [[UIColor orangeColorsetFill];

    

    [[self placeholderdrawInRect:rectwithFont:[UIFontsystemFontOfSize:20]];

}

相關文章
相關標籤/搜索