iOS Developer

UILabel--自适应、根据文字计算高宽、NSMutableA

2016-08-31  本文已影响827人  Gravity_Zhan

小白IOS进阶之路


UILabel根据文字计算frame宽高的三种方法:

1.系统自带方法(推荐)

/************************************************************

函数名称 : +(CGSize)labelSizeWithLabel:(UILabel *)label limitSize:(CGSize)size

函数描述 : 计算UILabel的高宽

输入参数 : label--当前控件、size--大小限制

返回参数 : CGSize--返回的size

备注信息 : 即使设置了NSAttributedString也一样适用,实际计算出的高度会超出此限制

**********************************************************/

+(CGSize)labelSizeWithLabel:(UILabel *)label limitSize:(CGSize)size

{

return [label sizeThatFits:size];

}


2.内容为NSAttributedString时使用

/************************************************************

函数名称 : -(CGSize)labelSizeWithAttributeStr:(NSAttributedString *)str limitSize:(CGSize)size

函数描述 : 计算UILabel的高宽

输入参数 : str--当前控件属性文字、size--大小限制

返回参数 : CGSize--返回的size

备注信息 : 注意在NSMutableParagraphStyle中不能设置其lineBreakMode属性,否则只能计算出其中一行的高度。

**********************************************************/

-(CGSize)labelSizeWithAttributeStr:(NSAttributedString *)str limitSize:(CGSize)size

{

CGSize lastSize= [str boundingRectWithSize:size options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading|NSStringDrawingTruncatesLastVisibleLine) context:nil].size;

return lastSize;

}

3.计算NSString及其附加属性的高度

/************************************************************

函数名称 : -(CGSize)labelSizeWithStr:(NSString *)str font:(UIFont *)font limitSize:(CGSize)size

函数描述 : 计算UILabel的高宽

输入参数 : str--当前控件文字、font--字体、size--大小限制

返回参数 : CGSize--返回的size

备注信息 : 注意此处不能设置lineBreakMode,一旦设置,则只能算出一行的高度

**********************************************************/

-(CGSize)labelSizeWithStr:(NSString *)str font:(UIFont *)font limitSize:(CGSize)size

{

NSMutableParagraphStyle *paragraphStyle= [[NSMutableParagraphStyle alloc]init];

paragraphStyle.lineSpacing=12;

NSDictionary *attrDic= @{NSFontAttributeName:font,NSParagraphStyleAttributeName:paragraphStyle};

CGSize lastSize= [str boundingRectWithSize:size options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingTruncatesLastVisibleLine) attributes:attrDic context:nil].size;

return lastSize;

}

^_^……复制粘贴的朋友请💗一下~

上一篇 下一篇

猜你喜欢

热点阅读