13.UILabel 中的一些属性
2016-02-19 16:22
363 查看
UILabel 中有一些不经常使用的属性, 今天来说一说。
1.字体大小自适应 Label 宽度
代码中创建的 label宽度为100, 字体内容需要200的宽度, 字体自适应最小比例为0.5。所以宽度为100的时候,字体会自动缩小, 缩小至0.5的比例为极限了。
注:minimumScaleFactor需要和adjustsFontSizeToFitWidth配合使用
2.在 xib 中控制字体大小自适应 Label 宽度
3.文本基线调整分布(baselineAdjustment)
UIBaselineAdjustmentAlignBaselines=0; //默认,文本最上端与中线对齐。
UIBaselineAdjustmentAlignCenters; //文本中线与label中线对齐。
UIBaselineAdjustmentNone //文本最低端与label中线对齐。
UIBaselineAdjustmentAlignBaselines效果图:
UIBaselineAdjustmentNone效果图:
UIBaselineAdjustmentAlignCenters效果图:
注:baselineAdjustment需要和adjustsFontSizeToFitWidth配合使用
4.lineBreakMode
设置标签文字过长时的显示方式,这个属性使用于label中文本的换行和截短,需要注意首先numberofLines必须设置为0,才有效果。
5.preferredMaxLayoutWidth
表现为在iOS7以上的系统中,UILabel能够自动换行,多行显示的字符串,而在iOS6上面则不会自动换行,直接打省略号。
正常情况下,numberOfLines设置为0,UILabel就会自动换行了。
但是在iOS6下面需要设置preferredMaxLayoutWidth,autolayout才会判断到折行的位置,才能正确的显示多行的UILabel
当label已经显示到界面上的时候,那么宽度就已经确定了,可以直接用此宽度作为最大autolayout宽度设置。
1.字体大小自适应 Label 宽度
UILabel *label = [[UILabel alloc]initWithFrame: CGRectMake(50, 50, 100, 100)]; label.font = [UIFont systemFontOfSize:50]; label.backgroundColor = [UIColor greenColor]; label.text = @"共四个字"; [self.view addSubview:label]; //字体大小自适应 Label 宽度 label.adjustsFontSizeToFitWidth = YES; //字体大小自适应最小比例设置 //label.minimumFontSize = 25; //iOS7.0后已弃用 label.minimumScaleFactor = 0.5; .
代码中创建的 label宽度为100, 字体内容需要200的宽度, 字体自适应最小比例为0.5。所以宽度为100的时候,字体会自动缩小, 缩小至0.5的比例为极限了。
注:minimumScaleFactor需要和adjustsFontSizeToFitWidth配合使用
2.在 xib 中控制字体大小自适应 Label 宽度
3.文本基线调整分布(baselineAdjustment)
@property(nonatomic) UIBaselineAdjustment baselineAdjustment; typedef NS_ENUM(NSInteger, UIBaselineAdjustment) { UIBaselineAdjustmentAlignBaselines = 0, // default. used when shrinking text to position based on the original baseline UIBaselineAdjustmentAlignCenters, UIBaselineAdjustmentNone, }; .
UIBaselineAdjustmentAlignBaselines=0; //默认,文本最上端与中线对齐。
UIBaselineAdjustmentAlignCenters; //文本中线与label中线对齐。
UIBaselineAdjustmentNone //文本最低端与label中线对齐。
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(50, 50, 100, 100)]; label.font = [UIFont systemFontOfSize:50]; label.backgroundColor = [UIColor greenColor]; label.text = @"共四个字"; [self.view addSubview:label]; //字体大小自适应 Label 宽度 label.adjustsFontSizeToFitWidth = YES; //这个属性就来控制文本基线的行为 label.baselineAdjustment = UIBaselineAdjustmentNone; .
UIBaselineAdjustmentAlignBaselines效果图:
UIBaselineAdjustmentNone效果图:
UIBaselineAdjustmentAlignCenters效果图:
注:baselineAdjustment需要和adjustsFontSizeToFitWidth配合使用
4.lineBreakMode
设置标签文字过长时的显示方式,这个属性使用于label中文本的换行和截短,需要注意首先numberofLines必须设置为0,才有效果。
label.lineBreakMode = NSLineBreakByCharWrapping;//以字符为显示单位显示,后面部分省略不显示。 label.lineBreakMode = NSLineBreakByClipping;//剪切与文本宽度相同的内容长度,后半部分被删除。 label.lineBreakMode = NSLineBreakByTruncatingHead;//前面部分文字以……方式省略,显示尾部文字内容。 label.lineBreakMode = NSLineBreakByTruncatingMiddle;//中间的内容以……方式省略,显示头尾的文字内容。 label.lineBreakMode = NSLineBreakByTruncatingTail;//结尾部分的内容以……方式省略,显示头的文字内容。 label.lineBreakMode = NSLineBreakByWordWrapping;//以单词为显示单位显示,后面部分省略不显示。 .
5.preferredMaxLayoutWidth
表现为在iOS7以上的系统中,UILabel能够自动换行,多行显示的字符串,而在iOS6上面则不会自动换行,直接打省略号。
正常情况下,numberOfLines设置为0,UILabel就会自动换行了。
但是在iOS6下面需要设置preferredMaxLayoutWidth,autolayout才会判断到折行的位置,才能正确的显示多行的UILabel
当label已经显示到界面上的时候,那么宽度就已经确定了,可以直接用此宽度作为最大autolayout宽度设置。
- (void)layoutSubViews { [super layoutSubViews]; self.label.preferredMaxLayoutWidth = self.label.bounds.size.width; } .
相关文章推荐
- Multiple build commands for output file
- 使用BlockingQueue实现包饺子( 生产者做面皮,消费者拿面皮包饺子)简单使用
- 《代码大全》之错误处理技术(Error-Handling Techniques)
- QT笔记:数据库总结(二)之SQL模型类-QSqlQueryModel模型
- UITabbarController左右滑动切换标签页
- event.returnValue=false和return false的用处
- poj1141 Brackets Sequence(区间dp)
- BlueStacks 使用说明
- iOS 轻松实现UITableViewCell 自适应高度
- Bluemix结合RabbitMq实现消息发送与接收实例
- IOS---NSdata 与 NSString,Byte数组,UIImage 的相互转换
- UICollectionViewLayout 学习(转)
- Fuel3D人脸扫描
- 12.关于UIWindow的总结
- UIUC大学之Coursera课程Text Retrieval and Search Engines:Week 4 Quiz
- UIUC大学之Coursera课程Text Retrieval and Search Engines:Week 3 Quiz
- UIUC大学之Coursera课程Text Retrieval and Search Engines:Week 4 Practice Quiz
- UIUC大学之Coursera课程Text Retrieval and Search Engines:Week 3 Practice Quiz
- UIUC大学之Coursera课程Text Retrieval and Search Engines:Week 2 Quiz
- UIUC大学之Coursera课程Text Retrieval and Search Engines:Week 2 Practice Quiz