IOS 计算UILable字符串高度

IOS7 之前

截取了部分

@interface ZGViewCell ()

@property (nonatomic, strong) UILabel *nameLable;

@end

- (UILabel *)nameLable{

    if (_nameLable == nil) {

        _nameLable = [[UILabel alloc] init];

        [self.contentView addSubview:_nameLable];

       // _nameLable.backgroundColor = [UIColor redColor];

        // 默认字体是17,会出现 ”···“

        _nameLable.font = [UIFont fontWithName:@"Arial" size:14];

    }

    return _nameLable;

}

// 位置

- (void)settingFrame{

    

    CGFloat padding = 10;

   

    // 图标

    CGFloat iconX = padding;

    CGFloat iconY = padding;

    CGFloat iconW = 30;

    CGFloat iconH = 30;

    self.iconImage.frame = CGRectMake(iconX, iconY, iconW, iconH);

    

    // 姓名    

    UIFont *nameFont = [UIFont fontWithName:@"Arial" size:14.0f];

    CGSize nameFrame = [self.statuses.name sizeWithFont:nameFont constrainedToSize:CGSizeMake(MAXFLOAT, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];

    

    CGFloat nameX = CGRectGetMaxX(self.iconImage.frame) + padding;

    CGFloat nameY = (self.iconImage.frame.size.height - nameFrame.height) * 0.5 + padding;

    self.nameLable.frame = CGRectMake(nameX, nameY, nameFrame.width, nameFrame.height);

}

IOS 7 苹果在UIStringDrawing.h中增加了很多方法

与上面对应的

/** boundingRectWithSize计算给定文本字符串所占的区域

  返回值是一个x,y = 0的CGRect 

  如果要计算多行的准确高度,需要传入NSStringDrawingUsesLineFragmentOrigin选项

  dict用于指定字体的相关属性的字典,UIKit框架中的第一个头文件

*/

// 位置

- (void)settingFrame{

NSDictionary *nameDict = @{NSFontAttributeName: [UIFont systemFontOfSize:14]};

CGRect nameFrame= [str boundingRectWithSize:CGSizeMake(MAXFLOAT, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:nameDict context:nil]; 

nameFrame.origin.x = CGRectGetMaxX(self.iconImage.frame) + padding;

nameFrame.origin.y = (self.iconImage.frame.size.height - nameFrame.height) * 0.5 + padding;

self.nameLable.frame = nameFrame;

}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。