2.UILabel文字不能对齐的解决方案

B3F484DD-ABF3-43EE-9D4B-5E3EB96D796E.png

使用xib布局银行cell的时候,突然发现****的星号不能与银行卡尾数垂直居中对齐,可能是由于*字体不和普通文字一样居中显示,废话不多说,直接上解决方案:

1.自定义UILabel, 添加edgeInsets属性

#import 

NS_ASSUME_NONNULL_BEGIN

@interface ZGKBankCardLabel : UILabel
@property(nonatomic, assign) UIEdgeInsets edgeInsets;
@end

NS_ASSUME_NONNULL_END

2.重写UILabel的- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines 和 - (void)drawTextInRect:(CGRect)rect 方法


#import "ZGKBankCardLabel.h"

@implementation ZGKBankCardLabel

/** 返回UILabel中内容所占的rect*/
- (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;
}

/** 在一定区域内显示出来UILabel的内容*/
- (void)drawTextInRect:(CGRect)rect {
    [super drawTextInRect:UIEdgeInsetsInsetRect(rect, self.edgeInsets)];
}


3.通过设置自定义cell中的自定义label的edgeInset属性,来调整rect,使得*居中,需要注意的是赋值edgeInsets后,最好调用一下sizeToFit属性。

@implementation ZGKMeBankCardCell

- (void)awakeFromNib {
    [super awakeFromNib];
    // Initialization code
    
    self.backgroud.layer.cornerRadius = 10;
    self.bankCardNum.text = @"1314";
    self.bankCardNum.font = [UIFont systemFontOfSize:20];
    self.selectionStyle = UITableViewCellSelectionStyleNone;

   // 下面两句是重点代码
    self.firstStarLabel.edgeInsets = UIEdgeInsetsMake(10, 0, 0, 0);//设置内边距
    self.secondStarLabel.edgeInsets = UIEdgeInsetsMake(10, 0, 0, 0);//设置内边距
    self.thirdStarLabel.edgeInsets = UIEdgeInsetsMake(10, 0, 0, 0);//设置内边距
    [self.firstStarLabel sizeToFit];//重新计算尺寸,会执行Label内重写的方法
    [self.secondStarLabel sizeToFit];//重新计算尺寸,会执行Label内重写的方法
    [self.thirdStarLabel sizeToFit];//重新计算尺寸,会执行Label内重写的方法
}

调整以后的结果如下:

95D92E8A-8ED1-42C4-BF71-3A5B071EED49.png

你可能感兴趣的:(2.UILabel文字不能对齐的解决方案)