2

我有一个UIView,有很多UITexfields

UITextField *field1 = [[UITextField alloc] initWithFrame:CGRectMake(135, 292, 50, 20)];
field1.backgroundColor = [UIColor clearColor];
field1.borderStyle = UITextBorderStyleNone;
field1.returnKeyType = UIReturnKeyNext;
field1.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom;
field1.font = [UIFont fontWithName:inputFont size:fontSize];
field1.placeholder = @"size";
[self addSubview:field1];

我可以创建一个UITextField类并使用这些预设参数创建此类的实例吗?- 以减少代码:(如果我有很多字段,代码会变得很长且重复?-

我能得到一些关于如何设置这个类的帮助吗?-谢谢你

4

3 回答 3

4

是的,您可以通过制作一个BaseUITextFeild .h.m文件来执行此操作,如下图所示。 在此处输入图像描述

在此处输入图像描述

BaseUITextFeild.m然后只需在文件中添加有关您的设计的以下代码

- (void)awakeFromNib {

    [self setupUI];
    [self setKeyboardAppearance:UIKeyboardAppearanceAlert];
}

// Function to setup the common UI throught the app.
- (void)setupUI {
    [self setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
    [self setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
    [self setTextAlignment:NSTextAlignmentCenter];
    [self setValue:[UIColor colorWithRed:120.0/225.0 green:120.0/225.0 blue:120.0/225.0 alpha:1.0] forKeyPath:@"_placeholderLabel.textColor"];
    [self setFont:[UIFont boldSystemFontOfSize:15.0f]];
}

以编程方式生成自定义 UITextField
然后就import "BaseUITextFeild.h"ViewController你想使用它的地方。

BaseUITextFeild *field1 = [[BaseUITextFeild alloc] initWithFrame:CGRectMake(135, 292, 50, 20)];
[self addSubview:field1];

从界面生成器(Storyboard/.XIB)生成自定义 UITextField
添加一个 UITextfield,然后将类更改为您的自定义 TextView 类。 在此处输入图像描述

通过应用以下技术,您可以在整个应用程序中使用相同UITextFeild的技术,只需import BaseUITextFeild.h.

你也可以使用这个 UITextFieldCategory

按照这两个示例UITextField+withFrame.hUITextField+ColoredPlaceholder.h。您也可以UITextField根据自己的需要进行定制。

于 2013-07-06T17:48:18.930 回答
2

创建一个方法

-(UITextField*)createTextFieldWithFrame:(CGRect)frame{
    UITextField *textField = [[UITextField alloc] initWithFrame:frame];
    textField.backgroundColor = [UIColor clearColor];
    textField.borderStyle = UITextBorderStyleNone;
    textField.returnKeyType = UIReturnKeyNext;
    textField.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom;
    textField.placeholder = @"size";
    [self.view addSubview:textField];
    return textField;
}

用于创建多个文本字段调用此方法

UITextField *text1 = [self createTextFieldWithFrame:CGRectZero];
UITextField *text2 = [self createTextFieldWithFrame:CGRectZero];
于 2013-07-06T17:51:58.387 回答
1

您可以根据需要创建自定义xib,并UITextField在每次需要时重复使用。

或者你可以子类UITextField化并在里面进行额外的设置。

于 2013-07-06T17:37:44.877 回答