UILabel 根据内容的多少来计算label的frame

本文介绍了计算标签框的最新方法,包括设置标签最大显示行数、定义字体大小和根据显示区域限制求出标签框尺寸的过程。通过示例代码演示了如何实现这一功能。

 

    self.label.text = @"....";

 计算 frame 的最新方法

    //1.设置lable最大显示行数

    self.label.numberOfLines = 0;

 //2.写出字体的字号

    NSDictionary *attrs = @{NSFontAttributeName : [UIFont systemFontOfSize:15]};

//3.根据显示区域的限制 (如CGSizeMake(375.0, 40.0))  求出一个框架的size    

    CGRect rect = [self.label.text boundingRectWithSize:CGSizeMake(375.0, 40.0) options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil];

例如

NSDictionary *attrs = @{NSFontAttributeName :[UIFont systemFontOfSize:15]};

            CGRect rect = [@"..." boundingRectWithSize:CGSizeMake(MAXFLOAT, 20) options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil];

 

附上函数抽取

-(void)calculateFrameOfLabel:(UILabel *)lab andAddValue:(CGFloat)value{

 

    lab.numberOfLines = 0;

 

    lab.font = kFontSize_24;    

 

    NSDictionary * attributes = [NSDictionary dictionaryWithObject:lab.font forKey:NSFontAttributeName];

 

    CGRect rect = [lab.text boundingRectWithSize:CGSizeMake(kScreenWidth - 12-12, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];

 

     lab.frame = CGRectMake(12, value, kScreenWidth - 24, rect.size.height);

 

}

 

有人说这么写

 

+ (CGSize )viewHeight:(CGSize )withd  :(float)thfont :(NSString*)text
{
CGSize size;
if(IOS_7>=7.0)
{
NSDictionary * attributes = [NSDictionary dictionaryWithObject:[UIFont systemFontOfSize:thfont]forKey:NSFontAttributeName];
NSAttributedString *attributedText =[[NSAttributedString alloc]initWithString:text attributes:attributes];
CGRect rect = [attributedText boundingRectWithSize:withd
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
size = rect.size;
}
else
{
//设置label的最大行数
size = [text sizeWithFont:[UIFont systemFontOfSize:thfont]constrainedToSize:withd lineBreakMode:NSLineBreakByClipping];
}
return size;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值