UILabel内边边距

在开发过程中,简单的使用UILabel属性,不能够达到我们显示一些特殊的要求。UILabel要显示边框时,不像UIButton有titleEdgeInsets属性,如果没有设置edgeInsets属性,里面的文字和边框离的很近,效果看起来不是很美观。怎么样才能让UILabel像UIButton一样拥有edgeInsets属性呢。首先要声明一个类继承于UILabel,声明edgeInsets属性。重写方法。
- (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)];
}
在使用的时候,直接用声明的edgeInsets属性就可以了,好像还要用到[label sizeToFit];这个方法。

你可能感兴趣的:(UILabel内边边距)