美文网首页
UILabel 标签

UILabel 标签

作者: 邻家小哥哥 | 来源:发表于2020-04-09 15:23 被阅读0次
    /** 
     * 1.文本内容(默认nil)
     */
     label.text = nil;
        
    /**
     * 2.文本字体(默认17.0)
     */
    label.font = [UIFont systemFontOfSize:20]; //一般方法
    label.font = [UIFont boldSystemFontOfSize:20]; //加粗方法
    label.font = [UIFont fontWithName:@"Arial" size:16]; //指定字体的方法  
    font字体名字查询地址:
    http://blog.csdn.net/qq_36136586/article/details/79015614
    
    /**
     * 3.文本颜色(默认blackColor)
     */
     label.textColor = [UIColor blackColor];
        
    /**
     * 4.文本阴影颜色(默认没有阴影)
     */
     label.shadowColor = [UIColor blackColor];
        
    /**
     * 5.文本阴影偏移量(默认一个向上的阴影)
     */
    label.shadowOffset = CGSizeMake(0, -1);
        
    /**
     * 6.内容对齐格式(默认NSTextAlignmentNatural,ios9之前默认左对齐)
    NSTextAlignmentLeft 左对齐
    NSTextAlignmentRight 右对齐
    NSTextAlignmentCenter 居中
    NSTextAlignmentJustified 最后一行自然对齐
    NSTextAlignmentNatural 默认对齐脚本
     */
    label.textAlignment = NSTextAlignmentNatural;
        
    /**
     * 7.内容显示格式(默认NSLineBreakByWordWrapping)
    NSLineBreakByWordWrapping 以空格为边界,保留单词
    NSLineBreakByCharWrapping 保留整个字符
    NSLineBreakByClipping 简单剪裁,保留到边界位置
    NSLineBreakByTruncatingHead 以"...wxyz"显示
    NSLineBreakByTruncatingTail 以:"abcd..."显示
    NSLineBreakByTruncatingMiddle 以:"ab...yz"显示
     */
    label.lineBreakMode = NSLineBreakByTruncatingTail;
        
    /**
     * 8.文本的属性字符串内容(默认nil)
     */
    label.attributedText = nil;
        
    /**
     * 9.高亮时文本颜色(默认nil)
     */
    label.highlightedTextColor = [UIColor blackColor];
        
    /**
     * 10.是否高亮(默认NO)
     */
    label.highlighted = NO;
        
    /**
     * 11.是否允许用户执行手势操作(默认NO)
     */
    label.userInteractionEnabled = NO;
        
    /**
     * 12.是否启用(默认YES)
     */
    label.enabled = YES;
        
    /**
     * 文本行数(默认1,为0时自动换行)
     */
    label.numberOfLines = 1;
        
    /**
     * 13.是否允许根据宽度改变字体(默认YES)
     */
    label.adjustsFontSizeToFitWidth = NO;
        
    /**
     * 14.是否允许根据设备的尺寸改变字体(默认YES)
     */
    label.adjustsFontForContentSizeCategory = YES;
        
    /**
     * 15.文本的基线位置对齐方式(默认UIBaselineAdjustmentAlignBaselines)
    UIBaselineAdjustmentAlignBaselines 文本最上端与中线对齐
    UIBaselineAdjustmentAlignCenters 文本中线与中线对齐
    UIBaselineAdjustmentNone 文本最低端与中线对齐
     */
    label.baselineAdjustment = UIBaselineAdjustmentAlignBaselines;
        
    /**
     * 16.文本缩放最小字体,默认0.0,为当前字体,行数为1时有效
     */
    label.minimumScaleFactor = 0.0;
        
    /**
     * 17.是否允许默认截断收紧,默认为no (ios9之后才可使用)
     */
    label.allowsDefaultTighteningForTruncation = NO;
        
    /**
     * 18.设置多行label的最大宽度
     * 当自动布局的时候约束这个label的时候这个 属性会起作用,在自动布局添加约束中,若文本超过了指定的最大宽度的时候 文本会另起一行 从而增加了label的高度
     */
    label.preferredMaxLayoutWidth = 0;
        
        
    /**
     * 19.是否允许添加空格充满整个宽度(默认NO,ios6~7可用)
     */
    label.adjustsLetterSpacingToFitWidth = NO;
    

    进阶

    1.修改文本特定内容属性
    • 额外类

    NSAttributedString 属性字符串
    NSMutableAttributedString 可变属性字符串

    /**
     * 1. 初始化方法
     */
    - (id)initWithString:(NSString *)str;
    - (id)initWithString:(NSString *)str attributes:(NSDictionary *)attrs;
    
    /** 21个
     * 2.可添加的字典属性 NSAttributedStringKey
    NSFontAttributeName 字体(默认Helvetica(Neue) 12)
    NSForegroundColorAttributeName 字体颜色(默认blackColor)
    NSBackgroundColorAttributeName 背景颜色(默认nil)
    NSStrikethroughColorAttributeName 删除线颜色(默认nil,同字体颜色)
    NSStrokeColorAttributeName 描边颜色(默认nil,同字体颜色)
    NSStrokeWidthAttributeName 描边宽度(默认为0)
    NSUnderlineColorAttributeName 下划线颜色(默认nil,同字体颜色)
    NSVerticalGlyphFormAttributeName 排版(NSNumber)0表示水平,1表示垂直
    NSLigatureAttributeName 字符连体(NSNumber)0表示没有连体字符,1表示使用默认的连体字符
    NSKernAttributeName 字符间隔(NSNumber)正值间距加宽,负值间距变窄
    NSBaselineOffsetAttributeName 基础偏移量(NSNumber)正值上偏,负值下偏
    NSObliquenessAttributeName 字体斜化(NSNumber)正值右倾,负值左倾
    NSExpansionAttributeName 字体扁平化设置文本横向拉伸属性(NSNumber)正值横向拉伸文本, 负值横向压缩文本
    NSLinkAttributeName 链接(NSURL)
    NSAttachmentAttributeName 附属属性(例如图片NSTextAttachment.image)
     */
         
    
    /**
     * NSStrikethroughStyleAttributeName 删除线格式
     * NSUnderlineStyleAttributeName 下划线格式
    NSUnderlineStyleNone 不设置下划线/删除线
    NSUnderlineStyleSingle 设置下划线/删除线为细的单线
    NSUnderlineStyleThick 设置下划线/删除线为粗的单线
    NSUnderlineStyleDouble 设置下划线/删除线为细的双线
    NSUnderlinePatternSolid 设置下划线/删除线样式为连续的实线
    NSUnderlinePatternDot 设置下划线/删除线样式为点,也就是虚线,比如这样:------
    NSUnderlinePatternDash 设置下划线/删除线样式为破折号,比如这样:—— —— ——
    NSUnderlinePatternDashDot 设置下划线/删除线样式为连续的破折号和点,比如这样:——-——-——-
    NSUnderlinePatternDashDotDot 设置下划线/删除线样式为连续的破折号、点、点,比如:——--——--——--
    NSUnderlineByWord 在有空格的地方不设置下划线/删除线
     */
         
    /**
     * NSShadowAttributeName 阴影
     */
    NSShadow *shadow = [[NSShadow alloc]init];
    shadow.shadowBlurRadius = 1.0;
    shadow.shadowOffset = CGSizeMake(1, 1);
    shadow.shadowColor = [UIColor redColor];
    
    /**
     * NSTextEffectAttributeName 文字效果(NSString)默认为空,没有文字效果
    NSTextEffectLetterpressStyle
     */
         
    /**
     * NSWritingDirectionAttributeName 书写方向NSWritingDirectionNatural= -1
    NSWritingDirectionLeftToRight=0 从左到右
    NSWritingDirectionRightToLeft=1 从右到左
     */
     
    /**
     * NSParagraphStyleAttributeName 段落格式(NSParagraphStyle)
     */
    NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
    paragraphStyle.lineSpacing = 20.;// 行间距
    paragraphStyle.lineHeightMultiple = 1.5;// 行高倍数(1.5倍行高)
    paragraphStyle.firstLineHeadIndent = 30.0f;//首行缩进
    paragraphStyle.minimumLineHeight = 10;//最低行高
    paragraphStyle.maximumLineHeight = 20;//最大行高(会影响字体)
    paragraphStyle.alignment = NSTextAlignmentLeft;// 对齐方式
    paragraphStyle.defaultTabInterval = 144;// 默认Tab 宽度
    paragraphStyle.headIndent = 20;// 起始 x位置
    paragraphStyle.tailIndent = 320;// 结束 x位置(不是右边间距,与inset 不一样)
    paragraphStyle.paragraphSpacing = 44.;// 段落间距
    paragraphStyle.paragraphSpacingBefore = 44.;// 段落头部空白(实测与上边的没差啊?)
    paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;// 分割模式
    /*
    NSLineBreakByWordWrapping 以空格为边界,保留单词
    NSLineBreakByCharWrapping 保留整个字符
    NSLineBreakByClipping 简单剪裁,保留到边界位置
    NSLineBreakByTruncatingHead 以"...wxyz"显示
    NSLineBreakByTruncatingTail 以:"abcd..."显示
    NSLineBreakByTruncatingMiddle 以:"ab...yz"显示
     */
    paragraphStyle.baseWritingDirection = NSWritingDirectionRightToLeft;// 段落方向
    /*
    NSWritingDirectionNatural 自然方向
    NSWritingDirectionLeftToRight 从左到右
    NSWritingDirectionRightToLeft 从右到左
     */
    
    /**
     * 3.使用方法
     */
    // 1.为某一范围内文字设置多个属性
    - (void)setAttributes:(NSDictionary *)attrs range:(NSRange)range;
    // 2.为某一范围内文字添加某个属性
    - (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;
    // 3.为某一范围内文字添加多个属性
    - (void)addAttributes:(NSDictionary *)attrs range:(NSRange)range;
    // 4.移除某范围内的某个属性
    - (void)removeAttribute:(NSString *)name range:(NSRange)range;
    // 5.在固定区间替换字符串
    - (void)replaceCharactersInRange:(NSRange)range withAttributedString:(NSAttributedString *)attrString;
    // 6.在固定第几个字符中插入字符串
    - (void)insertAttributedString:(NSAttributedString *)attrString atIndex:(NSUInteger)loc;
    // 7.拼接字符串
    - (void)appendAttributedString:(NSAttributedString *)attrString;
    // 8.完全替换掉attributeString的内容
    - (void)setAttributedString:(NSAttributedString *)attrString;
    
    

    拓展

    • 根据固定宽度计算文字的高度
        CGRect rect = [label.text boundingRectWithSize:CGSizeMake(300, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17.0]} context:nil];
        CGFloat height = rect.size.height;
    
    • 根据固定高度计算文字的宽度
        CGRect rect = [label.text boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, 300) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17.0]} context:nil];
        CGFloat width = rect.size.width;
    
    • 创建渐变层
    gradientlayer.startPoint = CGPointMake(0,0.5);
    gradientlayer.endPoint = CGPointMake(1,0.5); //横屏
    gradientlayer.frame = label.frame;
    gradientlayer.colors = @[(id)[self randomColor].CGColor,(id[self randomColor].CGColor,(id)[self randomColor].CGColor]; ///设置渐变层的颜色,随机颜色渐变
    gradientlayer.mask = label.layer;
    

    mask层工作原理:按照透明度裁剪,只保留非透明部分,文字就是非透明的,因此除了文字,其他都被裁剪掉,这样就只会显示文字下面渐变层的内容,相当于留了文字的区域,让渐变层去填充文字的颜色

    label.frame = gradientlayer.bounds;
    

    相关文章

      网友评论

          本文标题:UILabel 标签

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