如何在iOS中为UITextField提供填充?

时间:2015-06-27 05:05:21

标签: ios objective-c iphone ipad

我想从左侧填充填充到textfield。我已经在textfield中添加了一个背景图像,因为textfield中的文本总是从最左边开始。我尝试过以下解决方案,但这对于太多文本字段不起作用

    UIView *fieldEmail = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
    self.txt_fname.leftViewMode = UITextFieldViewModeAlways;
    self.txt_fname.leftView     = fieldEmail;

请建议我一些简单的解决方案,其中我不必创建一个单独的视图来提供填充。

问题中接受的答案对我不起作用。 Set padding for UITextField with UITextBorderStyleNone

2 个答案:

答案 0 :(得分:6)

您可以创建一个UITextFiled类别,如下面的代码:

.H class

#import <UIKit/UIKit.h>

@interface UITextField (Textpadding)


-(CGRect)textRectForBounds:(CGRect)bounds;
-(CGRect)editingRectForBounds:(CGRect)bounds;
@end

.M class

#import "UITextField+Textpadding.h"

@implementation UITextField (Textpadding)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"
-(CGRect)textRectForBounds:(CGRect)bounds {



    return CGRectMake(bounds.origin.x+20 , bounds.origin.y ,
                      bounds.size.width , bounds.size.height-2 );
}
-(CGRect)editingRectForBounds:(CGRect)bounds {
    return [self textRectForBounds:bounds];
}

此类别将在运行时默认设置所有文本字段填充。

如何创建类别

  • 按cmd + n创建新类,然后选择Objective-c class。

enter image description here

  • 然后选择类别如下。

enter image description here

  • 设置班级名称。

enter image description here

  • 设置文件名。

enter image description here

它现在在这堂课中作为我的答案进行编码。

答案 1 :(得分:1)

另一种更简单,更快捷的解决方案是,您可以制作图像视图并为其添加文本字段图像。然后在imageview顶部添加真实文本字段,并根据需要移动它,例如,当你想要左边填充时,你可以将文本字段稍微远离imageview的x-cordinate。