How may i customise all UITextField appearances for borderWidth?

2.3k Views Asked by At

i am trying to customise all UITextField appearances for borderWith.

Trying something like this. Only first 2 lines are making a difference. Rest of the lines not working ?

[[UITextField appearance] setBackgroundColor:[UIColor greenColor]];
[[UITextField appearance] setTextColor:[UIColor blackColor]];
[UITextField appearance].layer.cornerRadius = 6.0f;
[UITextField appearance].layer.borderColor = [UIColor redColor].CGColor;
[UITextField appearance].layer.borderWidth = 3.f;
2

There are 2 best solutions below

0
On BEST ANSWER

Unfortunately the appearance proxy doesn't work on layers to do what you want you should subclass UITextField and do your customisations in the layoutSubviews method (or in the init)

0
On

You can apply this to a class extended from UITextField or any UIControl you like to style.

1. Created an extension of UITextField and added following code:

- (void)awakeFromNib{

    self.layer.borderColor = [UIColor blueColor].CGColor;
    self.layer.borderWidth = 1.0f;
}

2.1 Create UITextField inside Code

Now if you create a UITextField inside your code, #import the extension of your UITextField and create the UITextField.

2.2 Create UITextField in Interface Builder

If you create the UIButton inside the Interface Builder, select the UITextField, go to the Identity Inspector and add the created extension as class for the UITextField.