Formatting UITextField - border, padding and color

A quick solution to format (border, color, padding) an UITextField is: UITextField+Format.h

#import <UIKit/UIKit.h>
@interface UITextField (Border_Color_Padding)
- (void)borderAndColor:(CGFloat)borderWidth paddingLeft:(BOOL)pad forLeft:(BOOL)left forTop:(BOOL)top forRight:(BOOL)right forBottom:(BOOL)bottom forColor:(UIColor *)color;
- (void)borderLeftAndColor:(CGFloat)borderWidth paddingLeft:(BOOL)pad forColor:(UIColor *)color;
- (void)borderTopAndColor:(CGFloat)borderWidth paddingLeft:(BOOL)pad forColor:(UIColor *)color;
- (void)borderRightAndColor:(CGFloat)borderWidth paddingLeft:(BOOL)pad forColor:(UIColor *)color;
- (void)borderBottomAndColor:(CGFloat)borderWidth paddingLeft:(BOOL)pad forColor:(UIColor *)color;
@end

UITextField+Format.m

#import "UITextField+Format.h"
@implementation UITextField (Border_Color_Padding)
- (void)borderAndColor:(CGFloat)borderWidth paddingLeft:(BOOL)pad forLeft:(BOOL)left forTop:(BOOL)top forRight:(BOOL)right forBottom:(BOOL)bottom forColor:(UIColor *)color {
	CALayer *border;
    if (top) {
		border = [CALayer layer];
		border.borderColor = color.CGColor;
		border.borderWidth = borderWidth;
		border.frame = CGRectMake(0, 0, self.frame.size.width, borderWidth);
		[self.layer addSublayer:border];
	}
	if (bottom) {
		border = [CALayer layer];
		border.borderColor = color.CGColor;
		border.borderWidth = borderWidth;
		border.frame = CGRectMake(0, self.frame.size.height - borderWidth, self.frame.size.width, borderWidth);
		[self.layer addSublayer:border];
	}
	if (left) {
		border = [CALayer layer];
		border.borderColor = color.CGColor;
		border.borderWidth = borderWidth;
		border.frame = CGRectMake(0, 0, borderWidth, self.frame.size.height);
		[self.layer addSublayer:border];
	}
	if (right) {
		border = [CALayer layer];
		border.borderColor = color.CGColor;
		border.borderWidth = borderWidth;
		border.frame = CGRectMake(self.frame.size.width - borderWidth, 0, borderWidth, self.frame.size.height);
		[self.layer addSublayer:border];
	}
	
	if (pad) {
		UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 7, 20)];
		self.leftView = paddingView;
		self.leftViewMode = UITextFieldViewModeAlways;
	}
}

- (void)borderLeftAndColor:(CGFloat)borderWidth paddingLeft:(BOOL)pad forColor:(UIColor *)color {
	[self borderAndColor:borderWidth paddingLeft:pad forLeft:YES forTop:NO forRight:NO forBottom:NO forColor:color];
}

- (void)borderTopAndColor:(CGFloat)borderWidth paddingLeft:(BOOL)pad forColor:(UIColor *)color {
	[self borderAndColor:borderWidth paddingLeft:pad forLeft:NO forTop:YES forRight:NO forBottom:NO forColor:color];
}

- (void)borderRightAndColor:(CGFloat)borderWidth paddingLeft:(BOOL)pad forColor:(UIColor *)color {
	[self borderAndColor:borderWidth paddingLeft:pad forLeft:NO forTop:NO forRight:YES forBottom:NO forColor:color];
}

- (void)borderBottomAndColor:(CGFloat)borderWidth paddingLeft:(BOOL)pad forColor:(UIColor *)color {
	[self borderAndColor:borderWidth paddingLeft:pad forLeft:NO forTop:NO forRight:NO forBottom:YES forColor:color];
}
@end

Then when you want to format the UITextField: - red bottom border and padding

[textField borderBottomAndColor:1.0f paddingLeft:YES forColor:[UIColor redColor]];

- black top border

[textField borderTopAndColor:1.0f paddingLeft:NO forColor:[UIColor blackColor]];

- black left and bottom border and padding

[textField borderAndColor:1.0f paddingLeft:YES forLeft:YES forTop:NO forRight:NO forBottom:YES forColor:[UIColor blackColor]];

Categories

Archive