ios开发系列之label自适应大小
2015-09-07 15:08
513 查看
根据label
的字体来自适应高度和宽度:
首先注意设置label的行数属性
label.numberOfLines = 0; //0表示无限制,默认为单行
然后创建一个
CGSize size对象,用来接收根据
label上的字体来调整的宽度和高度,
方法1:让
label.text调用方法 (注意该方法返回的是
CGRect类型,所以需要在方法后加一个
.size)
boundingRectWithSize:<#(CGSize)#> options:<#(NSStringDrawingOptions)#> attributes:<#(NSDictionary *)#> context:<#(NSStringDrawingContext *)#>
其中第一个参数表示
label的理论上的最大
bounds: 一般限制行宽,让行高无限大
CGSizeMake(300, MAXFLOAT)
第二个参数表示 绘制
label时的附加选项 ,有四种:
1,NSStringDrawingTruncatesLastVisibleLine //如果文本内容超过指定的矩形限制,文本将被截去,并在最后一个字符后加上省略号 2,NSStringDrawingUsesDeviceMetrics //计算布局时使用图元字形,而不是印刷字体 3,NSStringDrawingUsesFontLeading //计算行高时使用行距 (字体大小 + 行间距 = 行距) 4,NSStringDrawingUsesLineFragmentOrigin //绘制文本时使用 line fragment origin 而不是baseline origin.
一般选第四种.
第三个参数表示 属性 将
label上的字体
font存入字典,
key为
NSFontAttributeName例如:
@{NSFontAttributeName: label.font}
第四个参数表示 上下文 包括一些信息,例如如何调整字间距以及缩放. 最终,该对象包含的信息将用于文本绘制. 该参数可为 nil
完整代码:
UILabel * label = [[UILabel alloc]init]; label.text = @"根据其上面的字体来调整自己的高度和宽度"; label.numberOfLines = 0; label.font = [UIFont systemFontOfSize:20]; CGSize size = [label.text boundingRectWithSize:CGSizeMake(100,MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: label.font} context:nil].size; label.frame = CGRectMake(0, 20, size.width, size.height); [self.window addSubview:label];
方法2: 让
label.text调用方法
sizeWithAttributes:<#(NSDictionary *)#>
注意:该方法只能返回单行文本,也就是说不管你设置
label.numberOfLines为多少,都只返回一行,只是改变label宽度.这个方法可以在
label上的字体较少时使用
CGSize size = [label.text sizeWithAttributes:@{NSFontAttributeName: label.font}];
方法3: 让
label调用方法
sizeThatFits:<#(CGSize)#>
其中
CGSize参数表示
label理论上的最大
size,一般限制行宽,让行宽无限大
CGSize size = [label sizeThatFits:CGSizeMake(100, MAXFLOAT)];
相关文章推荐
- ios开发 Xcode下安装Versions以及Xcode配置svn
- iOS开发摇一摇功能
- iOS开发 - Keychain共享
- megapix-image.js使用的一个坑-ios图片裁剪之画布绘制大图片
- ios开发系列之根据字典创建模型
- iOS小结(二)navigation
- IOS动画Core Animation详解
- iOS 地图开发 基本常识
- ios开发系列之懒加载
- nagios 批量安装客户端
- ios中static的作用
- IOS彩票第二天设置界面(1)
- iOS7中的状态栏
- iOS学习笔记24-iOS7 StatusBar 使用小结
- iOS 六大手势
- iOS-私人通讯录完整版
- 播放音效 iOS
- IOS 中的常量const
- iOS tableview上放textfield
- iOS基础学习篇章前言