文本大小自适应
文本大小自适应需要调用NSString类的实例方法计算出文本的size,然后根据这个size来设定UILabel的frame来实现。计算size的方法有:
(1) -sizeWithFont:
- (CGSize)countTextSize:(NSString *)text
{
/*
1、换行方式默认取NSLineBreakByWordWrapping;
2、求出的size是单行显示时的高度和宽度.
*/
UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];
CGSize size = [text sizeWithFont:font];
return size;
}
(2) -sizeWithFont:forWidth:lineBreakMode:- (CGSize)countTextSize:(NSString *)text
{
/*
1、如果指定宽度小于字符串宽度,则宽度返回0;
2、求出的size是单行显示时的高度和宽度.
*/
UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];
CGSize size = [text sizeWithFont:font forWidth:400.0f lineBreakMode:NSLineBreakByWordWrapping];
return size;
}
(3)
-sizeWithFont:constrainedToSize:- (CGSize)countTextSize:(NSString *)text
{
/*
字符串用指定字体在指定区域进行单行显示时,需要的高度和宽度;
一般的用法是,指定区域的高度固定而宽度用MAXFLOAT,则返回值包含对应的宽度;
如果指定区域的宽度不够,则宽度返回0;高度不够则没影响;
核心:单行显示,指定区域的宽度要够大,获取宽度.
*/
UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];
CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 100.0f)];
return size;
}
(4) -sizeWithFont:constrainedToSize:lineBreakMode:
(最常用)- (CGSize)countTextSize:(NSString *)text
{
/*
字符串在指定区域内按照指定的字体显示时,需要的高度和宽度(宽度在字符串只有一行时有用)
一般用法:指定区域的宽度而高度用MAXFLOAT,则返回值包含对应的高度
如果指定区域的宽度指定,而字符串要显示的区域的高度超过了指定区域的高度,则高度返回0
核心:多行显示,指定宽度,获取高度
*/
UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];
CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(320.f, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
return size;
}
(5) -sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:- (CGSize)countTextSize:(NSString *)text
{
/*
虽然指定了换行方式,在实际计算时也会换行,但返回的结果只是第一行的高度很宽度;
指定了应该显示的字体,最小的字体,实际的字体,在实际计算中,如果宽度不够,则尽量缩小字符串的字体直至能够一行全部显示,如果缩到最小还不能完全显示字符串,则进行截断,返回截断后的字符串的高度和宽度;
字体实际的大小,存放在 actualFontSize里.
*/
UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];
CGFloat f = 0.0f;
CGSize size = [text sizeWithFont:font minFontSize:10.0f actualFontSize:&f forWidth:100.0f lineBreakMode:NSLineBreakByWordWrapping];
return size;
}
参考资料:http://blog.csdn.net/mamong/article/details/8542404
分享到:
相关推荐
UILabel、UILabel基本用法、UILabel详解,UILabel常用方法
创建一个UILabel对象 显示文字的赋值 设定label的显示位置 设置label的背景颜色,clearColor表示透明颜色 将Label显示到屏幕上 设置label文字的大小,使用系统默认字体,大小24 设置文字的颜色 设定阴影的颜色 设定...
UIlabel根据文本、字体获得label宽度;自适应宽高
UILabel 和UITextField 的常用api 介绍和使用
ios uilabel的代码 ios uilabel的代码 ios uilabel的代码 ios uilabel的代码 ios uilabel的代码 ios uilabel的代码
FlickerNumber, 闪烁一个像支付宝使用UILabel类别的数字 FlickerNumber闪烁一个像支付宝使用UILabel类别的数字。 使用高级方法时,它可能非常出色。 Swift 兼容性现在,1.0版本由 objective-c 编写,版本 2.0由 ...
支持三种UILabel中数字翻滚效果 UILabel number turn over
微信评论点击确定所点击的用户,获取UIlabel点击处的文字
UIButton,UILabel文字旋转(倾斜),UIButton,UILabel文字旋转(倾斜)
UILabel 继承于 UIView 里的各种属性和方法使用
简单方便的给UILabel内容中某几个文字添加点击事件,实现定制要求
iOS UIlabel 闪烁
整个工程怎么不能直接上传呢,我就把主要代码的类上传了
当前 UILabel 类为方法的实现类,针对声明类中对应的封装方法进行具体的相关方法的逻辑实现处理,最终将处理结果返回。
UILabel的删除线效果,主要是继承UiLabel类后重写方法得到 用法跟UILabelg一样,异常简单,多了一个 是否加上删除线的 属性而已
查找NGUI中UIlabel的路径,自己写的,要用下载吧。
当我们要在一个UILabel组件上显示指定文章格式和行间距 字体颜色或风格且高度不确定的文章时,只需要把该文件拉进工程。把头文件导入,即可让UILabel组件调用分类方法。任可要求均可满足。并且,还可以求出文章的...
本Demo是在继承UIControl的基础上,绘制出一个类似UILabel 的控件,可以实现文字的显示,文字颜色、大小的设置。
swift学习控件篇:UIButton+UILabel