在做商城应用的时候,会有一种UI布局是这样的:
商品现价的Label字号比较大,原价的Label字号较小,由于UILabel字号不同内边距就会不同,即使我们设置两个Label底部对齐,label内的文字也无法做的对齐
处理前:
处理后:
第一种处理方式:
设置原价的Label与现价的Label底部做一个偏移即可。(不要让两个Laebl底部对齐)
第二种处理方式:(设置内边距方式)
继承UILabel的类:YJLabelTest
#import <UIKit/UIKit.h>
@interface YJLabelTest : UILabel
@property (nonatomic, assign) UIEdgeInsets textInsets; // 控制文字与控件边界的间距
@end
#import "YJLabelTest.h"
@implementation YJLabelTest
- (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)];
}
测试实现(关注点:设置底部内边距的代码)
YJLabelTest *label = [[YJLabelTest alloc] init];
label.text = @"试一试";
label.font = [UIFont systemFontOfSize:80];
[self.view addSubview:label];
label.backgroundColor = [UIColor redColor];
label.textInsets = UIEdgeInsetsMake(0.f, 0.f, -20.f, 0.f); // 设置底部内边距
[label mas_makeConstraints:^(MASConstraintMaker *make) {
make.center.equalTo(self.view);
}];
YJLabelTest *labe2 = [[YJLabelTest alloc] init];
labe2.text = @"试一试";
labe2.font = [UIFont systemFontOfSize:20];
labe2.textInsets = UIEdgeInsetsMake(0.f, 0.f, 0.f, 0.f); // 设置底部内边距
labe2.backgroundColor = [UIColor greenColor];
[self.view addSubview:labe2];
[labe2 mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(label);
make.left.equalTo(label.mas_right);
}];