本文主要是介绍iOS UILabel设置内边距,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
自定义一个BHEdgeLabel继承自UILabel, 以下是代码BHEdgeLabel.h
#import <UIKit/UIKit.h>@interface BHEdgeLabel : UILabel
@property (nonatomic, assign) IBInspectable CGFloat topEdge;
@property (nonatomic, assign) IBInspectable CGFloat leftEdge;
@property (nonatomic, assign) IBInspectable CGFloat bottomEdge;
@property (nonatomic, assign) IBInspectable CGFloat rightEdge;@property (nonatomic, assign) UIEdgeInsets contentEdgeInsets;@endBHEdgeLabel.m
#import "BHEdgeLabel.h"@implementation BHEdgeLabel
@synthesize contentEdgeInsets = _contentEdgeInsets;- (void)setContentEdgeInsets:(UIEdgeInsets)contentEdgeInsets
{_contentEdgeInsets = contentEdgeInsets;_topEdge = _contentEdgeInsets.top;_leftEdge = _contentEdgeInsets.left;_rightEdge = _contentEdgeInsets.right;_bottomEdge = _contentEdgeInsets.bottom;[self invalidateIntrinsicContentSize];
}
- (void)setTopEdge:(CGFloat)topEdge
{_topEdge = topEdge;[self invalidateIntrinsicContentSize];
}- (void)setLeftEdge:(CGFloat)leftEdge
{_leftEdge = leftEdge;[self invalidateIntrinsicContentSize];
}- (void)setBottomEdge:(CGFloat)bottomEdge
{_bottomEdge = bottomEdge;[self invalidateIntrinsicContentSize];
}- (void)setRightEdge:(CGFloat)rightEdge
{_rightEdge = rightEdge;[self invalidateIntrinsicContentSize];
}- (UIEdgeInsets)contentEdgeInsets
{_contentEdgeInsets = UIEdgeInsetsMake(_topEdge, _leftEdge, _bottomEdge, _rightEdge);return _contentEdgeInsets;
}- (CGSize)intrinsicContentSize
{CGSize size = [super intrinsicContentSize];size.height += (_topEdge + _bottomEdge);size.width += (_leftEdge + _rightEdge);return size;
}- (CGSize)sizeThatFits:(CGSize)size
{CGSize newSize = [super sizeThatFits:size];newSize.height += (_topEdge + _bottomEdge);newSize.width += (_leftEdge + _rightEdge);return newSize;
}-(void)drawTextInRect:(CGRect)rect {[super drawTextInRect:UIEdgeInsetsInsetRect(rect, UIEdgeInsetsMake(_topEdge, _leftEdge, _bottomEdge, _rightEdge))];
}@end
这篇关于iOS UILabel设置内边距的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!