天天看點

iOS 根據文字内容動态設定寬度與高度

下面說一下在開發中,遇到的一個簡單的文字排版代碼片段。

//這是計算 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