Formatting UILabel - border and color

A quick solution to add borders to an UILabel is: UILabel+Border.h

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

UILabel+Border.m

#import "UILabel+Border.h"
@implementation UILabel (Border_Color)
- (void)borderAndColor:(CGFloat)borderWidth forLeft:(BOOL)left forTop:(BOOL)top forRight:(BOOL)right forBottom:(BOOL)bottom forColor:(UIColor *)color {
	self.layer.borderWidth = borderWidth;
	self.layer.borderColor = color.CGColor;
	
	int h = (top ? 0 : 1) + (bottom ? 0 : 1);
	int w = (left ? 0 : 1) + (right ? 0 : 1);
	
	UIView* mask = [[UIView alloc] initWithFrame:CGRectMake(left ? 0 : borderWidth, top ? 0 : borderWidth, self.frame.size.width - w * borderWidth, self.frame.size.height - h * borderWidth)];
	mask.backgroundColor = color;
	self.layer.mask = mask.layer;
}

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

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

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

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

Then when you want to add borders to UILabel: - bottom border

[label borderBottomAndColor:1.0f forColor:[UIColor blackColor]];

- top border

[label borderTopAndColor:1.0f forColor:[UIColor blackColor]];

- top and bottom border

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

Categories

Archive