在不少产品设计的时候,产品设计人员设计出来的输入框总会要求,文字的内容距离作边框多少像素,编辑区域的其实点,距离左边多少像素,不少人绝的难以适应!其实这些都不存在很大的技术难度,一下这些方式均可以达到这样的一个目的: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;
经过重写这些方法,对应的一些特殊的产品设计要求基本上都能实现,这种方法的好处在于,一个产品在视觉上不少时候都是统一的。也就是说在产品开发的初期,若是重写这些方法,在后续的使用过程当中,很方便的重复使用