iOS UILabel 属性详解与使用心得

释放双眼,带上耳机,听听看~!

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];

 

 

人已赞赏
iOS文章

iOS开发封装一个可以响应超链接的label——基于RCLabel的交互扩展

2019-9-28 23:03:35

iOS文章

iOS系统菜单控制器UIMenuController使用简介

2019-9-28 23:22:20

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索