UILabel 边距 2021-01-11
2021-01-11 本文已影响0人
iOS打怪升级
- labal 边距设置
@interface HQPaddingLabel : UILabel
@property (nonatomic, assign) UIEdgeInsets textInsets; // 控制字体与控件边界的间隙
@end
@implementation HQPaddingLabel
- (instancetype)init
{
if (self = [super init]) {
_textInsets = UIEdgeInsetsZero;
}
return self;
}
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
_textInsets = UIEdgeInsetsZero;
}
return self;
}
- (void)drawTextInRect:(CGRect)rect
{
[super drawTextInRect:UIEdgeInsetsInsetRect(rect, _textInsets)];
}
- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines
{
if (self.text.length == 0) {
return [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines];
}
UIEdgeInsets insets = self.textInsets;
CGRect rect = [super textRectForBounds:bounds 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;
}
- YYLabel 空白占位处理
YYTextContainer *container = [YYLabel tq_getTextContainerInRect:CGRectMake(0, 0, kScreen_Width - 50, answerHeight) indentFootSize:CGSizeMake(width, 16)];
self.answerLabel.textLayout = [YYTextLayout layoutWithContainer:container text:self.answerLabel.attributedText];
+ (YYTextContainer *)tq_getTextContainerInRect:(CGRect)rect indentFootSize:(CGSize)indentFootSize
{
UIBezierPath *path = [UIBezierPath bezierPathWithRect:rect];
UIBezierPath *headIndentPath = [UIBezierPath bezierPathWithRect:CGRectMake(rect.size.width - indentFootSize.width, rect.size.height - indentFootSize.height, indentFootSize.width, indentFootSize.height)];
YYTextContainer *container = [YYTextContainer containerWithPath:path];
container.exclusionPaths = @[headIndentPath];
return container;
}