2015-03-06 5 views
0

Я пытаюсь создать пользовательский класс, который будет в основном создавать нижнюю границу моего UITextField. Проблема в том, что у меня будет несколько UITextFields, которые подчеркнуты, и вместо дублирования кода я решил создать собственный класс. Вот код:Создайте пользовательский класс, используя CALayer для 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

Самый простой метод будет создать метод и передавая текстовое поле, которое вы хотите изменить:

-(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, чтобы изменить его.

+0

Это написано на языке Swift? –

+0

@JohnSmith извините, я преобразовал его в Objective-C, не попробовал его в xCode, так что это могут быть некоторые типизирующие ошибки. – Greg

+0

Хорошо, отлично. Я на самом деле кончался тем, что сам это исправлял, но я просто не хотел, чтобы кто-то приходил и пытался заманить тебя за это. Большое спасибо, Грег! –

Смежные вопросы