使用CALayer为UITextField创建自定义类

时间:2015-03-06 10:14:53

标签: objective-c

我正在尝试创建一个自定义类,它基本上会在我的UITextField上创建一个底部边框。问题是我将有多个带下划线的UITextField,而不是重复的代码,我想我创建了一个自定义类。这是代码:

    CALayer *border = [CALayer layer];
    CGFloat borderWidth = 2;
    border.borderColor = [UIColor whiteColor].CGColor;
    border.frame = CGRectMake(0, self.emailTextField.frame.size.height - borderWidth, self.emailTextField.frame.size.width, self.emailTextField.frame.size.height);
    border.borderWidth = borderWidth;
    [self.emailTextField.layer addSublayer:border];
    self.emailTextField.layer.masksToBounds = YES;

如何不必一遍又一遍地重写代码,我将如何复制它?

1 个答案:

答案 0 :(得分:1)

最简单的方法是创建一个方法并传递您想要更改的文本字段:

-(void)addBorderLayer:(UITextField*)tf{
    CALayer *border = [CALayer layer];
    CGFloat borderWidth = 2;
    border.borderColor = [UIColor whiteColor].CGColor;
    border.frame = CGRectMake(0, tf.frame.size.height - borderWidth, tf.frame.size.width, tf.frame.size.height);
    border.borderWidth = borderWidth;
    [tf.layer addSublayer:border];
    tf.layer.masksToBounds = YES;
}

你可以这样称呼:

[self addBorderLayer:self.emailTextField];
[self addBorderLayer:self.anotherTextField];

另一个解决方案是创建继承自UITextField的自定义类,或者您可以向UITextField添加扩展以修改自身。