//#import@interface EdgeInsetsLabel : UILabel
@property(nonatomic, assign) UIEdgeInsets edgeInsets;
@end
復(fù)制代碼
復(fù)制代碼
//
//? EdgeInsetsLabel.m
//? EdgeInsetsLabel
//
//? Created by YouXianMing on 14/10/27.
//? Copyright (c) 2014年 YouXianMing. All rights reserved.
//
#import "EdgeInsetsLabel.h"
@implementation EdgeInsetsLabel
- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines {
UIEdgeInsets insets = self.edgeInsets;
CGRect rect = [super textRectForBounds:UIEdgeInsetsInsetRect(bounds, insets)
limitedToNumberOfLines:numberOfLines];
rect.origin.x? ? -= insets.left;
rect.origin.y? ? -= insets.top;
rect.size.width? += (insets.left + insets.right);
rect.size.height += (insets.top + insets.bottom);
return rect;
}
- (void)drawTextInRect:(CGRect)rect {
[super drawTextInRect:UIEdgeInsetsInsetRect(rect, self.edgeInsets)];
}
@end
復(fù)制代碼
ViewController.m
復(fù)制代碼
//
//? ViewController.m
//? SetInsets
//
//? Created by YouXianMing on 14/10/27.
//? Copyright (c) 2014年 YouXianMing. All rights reserved.
//
#import "ViewController.h"
#import "EdgeInsetsLabel.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
EdgeInsetsLabel *label? ? = [[EdgeInsetsLabel alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
label.font = [UIFont fontWithName:@"HelveticaNeue-Thin" size:30.f];
label.text? ? ? ? ? ? ? ? = @"No Zuo No Die";
label.edgeInsets? ? ? ? ? = UIEdgeInsetsMake(8, 8 , 8, 8); //核心一: 設(shè)置內(nèi)邊距
[label sizeToFit]; //核心二: 重新計(jì)算尺寸,會(huì)調(diào)用- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines方法
label.layer.cornerRadius? = label.frame.size.height / 2.f;
label.backgroundColor? ? = [UIColor blackColor];
label.textColor? ? ? ? ? = [UIColor redColor];
label.layer.masksToBounds = YES;
label.center? ? ? ? ? ? ? = self.view.center;
[self.view addSubview:label];
}
@end