UILabel作为一个展示文字的控件,功能比较强大,可以展示普通文本,富文本,多行文字。
1.初始化UILabel
UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 50)];
titleLabel.text = @"test";
2.属性介绍
//设置label的文字
titleLabel.text = @"我的测试文字";
//设置label的字体
titleLabel.font = [UIFont systemFontOfSize:12];
//设置label的颜色
//default is nil (text draws black)
titleLabel.textColor = [UIColor grayColor];
//设置label的阴影颜色和偏移
titleLabel.shadowColor = [UIColor redColor]; titleLabel.shadowOffset = CGSizeMake(10, 10);
//设置文字对齐方式
titleLabel.textAlignment = UITextAlignmentLeft;//文字靠左
titleLabel.textAlignment = UITextAlignmentCenter;//文字居中
titleLabel.textAlignment = UITextAlignmentRight;//文字靠右
//设置文案的换行模式
titleLabel.lineBreakMode = NSLineBreakByTruncatingTail;//截取末尾
typedef NS_ENUM(NSInteger, NSLineBreakMode) {
NSLineBreakByWordWrapping = 0, // Wrap at word boundaries, default
NSLineBreakByCharWrapping, // Wrap at character boundaries
NSLineBreakByClipping, // Simply clip
NSLineBreakByTruncatingHead, // Truncate at head of line: "...wxyz" //截取头部
NSLineBreakByTruncatingTail, // Truncate at tail of line: "abcd..." 截取末尾
NSLineBreakByTruncatingMiddle // Truncate middle of line: "ab...yz" 截取中间
}
//设置富文本
titleLabel.attributedText = [[NSAttributedString alloc] initWithString:@"我是富文本"];
//设置高亮状态相关
titleLabel.highlightedTextColor = [UIColor greenColor];
titleLabel.highlighted = YES;
//label 交互以及是否可用
//默认不能交互,如添加手势不生效
titleLabel.userInteractionEnabled = YES;
titleLabel.enabled = YES;
//设置label显示的行数
//0表示显示任意行
titleLabel.numberOfLines = 0;
//设置label是否自适应字体大小
titleLabel.adjustsFontSizeToFitWidth = YES;
//设置label基线对齐方式(当adjustsFontSizeToFitWidth= YES时生效)
//默认对齐方式
typedef enum {
UIBaselineAdjustmentAlignBaselines, //默认值文本最上端与label中间线对齐
UIBaselineAdjustmentAlignCenters, //text中间与label中间线对齐
UIBaselineAdjustmentNone, //text最低端与label中间线对齐
} UIBaselineAdjustment;
titleLabel.baselineAdjustment = UIBaselineAdjustmentAlignBaselines;
//设置最小缩放字体(当adjustsFontSizeToFitWidth= YES,指定了最小缩放字体)
titleLabel.minimumScaleFactor = 20;
//label截断是否紧缩文字
//The default value of this property is NO.
titleLabel.allowsDefaultTighteningForTruncation = YES;
3.使用技巧
1.设置文字的时候,通过 [titleLabel sizeToFit]可以自适应文字。
NOTE
:在sizeToFit之前需要指定label的宽度。
2.当需要根据字体和文字大小自适应的时候,可以使用adjustsFontSizeToFitWidth
属性,进行给定宽高适配。
NOTE:默认文字顶部和中心对齐,可以设置titleLabel.baselineAdjustment = UIBaselineAdjustmentAlignBaselines; 解决。
也可以使用NSString的方法,计算出适应字体的大小,不过这个接口在iOS7废弃了。
//通过指定字体,设置最小字体,宽度,以及换行模式,返回对应的字体。
CGFloat fontSizeThatFits;
[tempString sizeWithFont: [UIFont systemFontOfSize:12] minFontSize:20 actualFontSize:&fontSizeThatFits forWidth:self.cg_width lineBreakMode:NSLineBreakByWordWrapping];
3.当照片和文字需要显示在多行一起显示的时候,可以通过富文本显示。
NOTE:
单纯的照片可以使用NSTextAttachment,复杂的交互可以使用CoreText。
UIImage *image = [UIImage imageWithColor:[UIColor clearColor]];;
NSTextAttachment *attach = [[NSTextAttachment alloc] init];
attach.image = image;
attach.bounds = CGRectMake(0, 0, 0, 20);
NSAttributedString *textAttachmentString = [NSAttributedString attributedStringWithAttachment:attach];
网友评论