下面说一下在开发中,遇到的一个简单的文字排版代码片段。
//这是计算 label 根据文字的显示 格式和字数得出的宽高
- (CGSize) calculateLabelSize:(UILabel *)label{
// 设置Label的字体 HelveticaNeue Courier
UIFont *fnt = [UIFont fontWithName:label.text size:label.font.pointSize];
label.font = fnt;
// 根据字体得到NSString的尺寸
CGSize size = [label.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:label.font,NSFontAttributeName, nil]];
// 名字的H
CGFloat nameH = size.height;
// 名字的W
CGFloat nameW = size.width;
CGSize sizes = CGSizeMake(nameW, nameH);
return sizes;
}
//限制 label 显示的最大宽度和设置显示的样式 【我是懒加载的形式去创建 label,然后重写 get 方法自定义 label 的样式】- (UILabel *)addRess{
if (_addRess == nil) {
_addRess = [[UILabel alloc] init];
_addRess.font = [UIFont systemFontOfSize:9.f];
_addRess.lineBreakMode = NSLineBreakByTruncatingTail;
_addRess.numberOfLines = 0;
[self.contentView addSubview:_addRess];
}
CGSize size = [self calculateLabelSize:_addRess];
_addRess.frame = CGRectMake(_addRess.frame.origin.x, _addRess.frame.origin.y, size.width>=200.f?200.f:size.width, size.height);
return _addRess;
}
小小技术点,可自行 get