UILabel 边距 2021-01-11

2021-01-11  本文已影响0人  iOS打怪升级
  1. 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;
    
}

  1. 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;
}

上一篇 下一篇

猜你喜欢

热点阅读