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;

经过重写这些方法,对应的一些特殊的产品设计要求基本上都能实现,这种方法的好处在于,一个产品在视觉上不少时候都是统一的。也就是说在产品开发的初期,若是重写这些方法,在后续的使用过程当中,很方便的重复使用

相关文章
相关标签/搜索