slabko
12/28/2014 - 7:01 PM

UILabel with margins

UILabel with margins

#import "ARLMarginLabel.h"

IB_DESIGNABLE
@implementation ARLMarginLabel

- (void)drawTextInRect:(CGRect)rect
{
    [super drawTextInRect:UIEdgeInsetsInsetRect(rect, self.margins)];
}

- (CGSize)intrinsicContentSize
{
    CGSize size = [super intrinsicContentSize];
    size.width += self.leftMargin + self.rightMargin;
    size.height += self.topMargin + self.bottomMargin;
    return size;
}

- (UIEdgeInsets)margins
{
    return UIEdgeInsetsMake(self.topMargin, self.leftMargin,
                            self.bottomMargin, self.rightMargin);
}

- (void)setMargins:(UIEdgeInsets)margins
{
    self.topMargin = margins.top;
    self.leftMargin = margins.left;
    self.bottomMargin = margins.bottom;
    self.rightMargin = margins.right;
}

@end
#import <UIKit/UIKit.h>

@interface ARLMarginLabel : UILabel

@property (nonatomic, assign) UIEdgeInsets margins;

// For IB
@property (nonatomic, assign) IBInspectable CGFloat topMargin;
@property (nonatomic, assign) IBInspectable CGFloat rightMargin;
@property (nonatomic, assign) IBInspectable CGFloat bottomMargin;
@property (nonatomic, assign) IBInspectable CGFloat leftMargin;

@end