下面說一下在開發中,遇到的一個簡單的文字排版代碼片段。
//這是計算 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