美文网首页
UILabel 属性详解与使用心得

UILabel 属性详解与使用心得

作者: 似奔跑的野马 | 来源:发表于2018-08-15 16:29 被阅读0次

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

    相关文章

      网友评论

          本文标题:UILabel 属性详解与使用心得

          本文链接:https://www.haomeiwen.com/subject/anewbftx.html