在文本内容不一定的时候,文本框的大小没办法确定,文本框太小了会出现“...”,太大了会有很多空表区域,这时候如果可以计算文本内容需要多大的空间(宽、高),再来设置文本框的大小,就能解决此问题。
上代码:
/**
* 计算文本高度方法
*
* @param text 要计算的文本内容
* @param w 要显示的控件的宽度
* @param fontsize 控件显示文本的字体大小
*
* @return 返回计算的文本占用位置的大小(含宽,高)
*/
+(CGSize)calStrSize:(NSString*)text andWidth:(CGFloat)w andFontSize:(CGFloat)fontsize
{
CGSizesize=[text boundingRectWithSize:CGSizeMake(w,MAXFLOAT)options:NSStringDrawingUsesLineFragmentOriginattributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:fontsize]}context:nil].size;
returnsize;
}
这里需要给定文本框的宽度以及字体大小,就能计算出文本框需要多少高度,这时候再来设置文本框的大小就OK了。
还有一种情况,文本内容少,不需要换行,但是需要计算文本会占用多少宽度
例如:一排按钮,如果每个按钮的宽度一样,那按钮标题较长的按钮,跟其他按钮之间的空格看起来就小了,甚至出现“...”,这样很不美观。
上代码:
/**
* 计算文本宽度方法
*
* @param text 要计算的文本内容
* @param fontsize 控件显示文本的字体大小
*
* @return 返回计算的文本占用位置的大小(含宽,高)
*/
+(CGSize)calStrWith:(NSString*)text andFontSize:(CGFloat)fontsize
{
CGSizesize=[text boundingRectWithSize:CGSizeMake(MAXFLOAT,MAXFLOAT)options:NSStringDrawingUsesLineFragmentOriginattributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:fontsize]}context:nil].size;
returnsize;
}
给定文本内容及字体大小,就能知道文本所占的宽度。
用在一排按钮上效果如图:
分享封装好的类:链接: http://pan.baidu.com/s/1o8u5Nyq 密码: 3qig