UILable的常用方法和属性
设置文字颜色(默认为黑色)
@property(nonatomic,strong) UIColor     *textColor
设置显示文字
@property(nonatomic,copy)   NSString           *text; 
 
设置字体大小(默认为17)
@property(nonatomic,strong) UIFont      *font
// 正常字体设置
• (UIFont *)systemFontOfSize:(CGFloat)fontSize;
// 设置粗体字体
• (UIFont *)boldSystemFontOfSize:(CGFloat)fontSize;
// 设置标签文本字体和字体大小
• (UIFont *)fontWithName:(NSString *)fontName size:(CGFloat)fontSize;
 
// 文本文字自适应大小(默认为NO)
@property(nonatomic) BOOL adjustsFontSizeToFitWidth;       
 
// 展示行数(默认为1) 为0时没有最大行数限制
@property(nonatomic) NSInteger numberOfLines;
 
设置高亮
@property(nonatomic,getter=isHighlighted) BOOL     highlighted;
// 设置高亮颜色
@property(nonatomic,strong) UIColor *highlightedTextColor;
 
// 设置阴影颜色
@property(nonatomic,strong) UIColor            *shadowColor;
// 设置阴影颜色大小
@property(nonatomic)        CGSize             shadowOffset;
 
// 设置文字对其模式
@property(nonatomic)        NSTextAlignment    textAlignment; 
NSTextAlignmentLeft   向左对齐(默认)
NSTextAlignmentCenter 居中对其
NSTextAlignmentRight  向右对齐
 
// 断行模式
@property(nonatomic)        NSLineBreakMode    lineBreakMode;
NSLineBreakByWordWrapping = 0 //以空格为边界,保留单词。
NSLineBreakByCharWrapping    //保留整个字符
NSLineBreakByClipping             //简单剪裁,到边界为止
NSLineBreakByTruncatingHead //前面部分文字以……方式省略,显示尾部文字内容
NSLineBreakByTruncatingTail //结尾部分的内容以……方式省略,显示头的文字内容。(默认)
NSLineBreakByTruncatingMiddle //中间的内容以……方式省略,显示头尾的文字内容。
 
带属性字符串
字符属性(NSMutableAttributedString和NSAttributedString)
 NSString *const NSFontAttributeName;(字体)
该属性所对应的值是一个 UIFont 对象。该属性用于改变一段文本的字体。如果不指定该属性,则默认为12-point Helvetica(Neue)。
 
NSString *const NSParagraphStyleAttributeName;(段落)
 该属性所对应的值是一个 NSParagraphStyle 对象。该属性在一段文本上应用多个属性。如果不指定该属性,则默认为 NSParagraphStyle 的defaultParagraphStyle 方法返回的默认段落属性。
 
NSString *const NSForegroundColorAttributeName;(字体颜色)
 该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的字体颜色。如果不指定该属性,则默认为黑色。
 
 NSString *const NSBackgroundColorAttributeName;(字体背景色)
 该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的背景颜色。如果不指定该属性,则默认无背景色。
 
 
 NSString *const NSKernAttributeName;(字间距 , 以像素为单位)
 该属性所对应的值是一个 NSNumber 对象(整数)。字母紧排指定了用于调整字距的像素点数。字母紧排的效果依赖于字体。默认值为0。
 
 NSString *const NSStrikethroughStyleAttributeName;(删除线)
 该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上删除线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。
 
 NSString *const NSUnderlineStyleAttributeName;(下划线)
 该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上下划线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。
 
 NSString *const NSStrokeColorAttributeName;(边线颜色)
 该属性所对应的值是一个 UIColor 对象。如果该属性不指定(默认),则等同于 NSForegroundColorAttributeName。否则,指定为删除线或下划线颜色。更多细节见“Drawing attributedstrings that are both filled and stroked”。
 
 NSString *const NSStrokeWidthAttributeName;(边线宽度)
 该属性所对应的值是一个 NSNumber 对象(小数)。该值改变描边宽度(相对于字体size 的百分比)。默认为 0,即不改变。正数只改变描边宽度。负数同时改变文字的描边和填充宽度。例如,对于常见的空心字,这个值通常为3.0。
//给制定区域内的字符串添加指定属性
- (void)addAttributes:(NSDictionary<NSString *, id> *)attrs range:(NSRange)range;
//移除指定范围内字符串的指定属性
- (void)removeAttribute:(NSString *)name range:(NSRange)range;
//获取指定范围内的attributesString的属性
- (NSDictionary<NSString *, id> *)attributesAtIndex:(NSUInteger)location effectiveRange:(nullable NSRangePointer)range;
 
 
获取到字符串内容所占区域(用来控制 label 根据内容控制高度)
• (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary<NSString *, id> *)attributes context:(NSStringDrawingContext *)context
• size:设置文字需要展示的size
• options:文本绘制时的附加选项
NSStringDrawingUsesLineFragmentOrigin (指定的起源是片段的起源,没有底线的起源)
NSStringDrawingUsesFontLeading (使用字体主要计算线高度)
NSStringDrawingUsesDeviceMetrics (使用图像字形边界代替排版)
 
NSStringDrawingOptions 的值, 在多行的情况下, 至少要有   NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading,如果文 字中可能会出现emoji表情的话, emoji的高度比文字要高一点点, 
• attributes: 存储属性的字典,必须包含:字号大小,否则无法正常计算
• - context:该参数可为 nil 
 
UILabel经常用到的方法
- (void)sizeToFit
• (CGSize)sizeThatFits:(CGSize)size
sizeToFit会自动调用sizeThatFits:方法;
sizeToFit不应该在子类中被重写,应该重写sizeThatFits:
 
 
iOS如何使用第三方字体
1、从网上下载所需字体的TTF文件。将字体所对应的TTF文件拖入项目中
2、然后在info.plist中添加一个新的键Fonts provided by application, NSArray类型的, 在其对应的item里面的string值为**.TTF,如图: 
3、接下来就是要知道对应字体的名字FontName了。一个字体文件包括以下几个内容:文件名、字体名称、字体具体名称,我们只有文件名,不知道字体名称是什么,更不知道具体的名称,那么我们就需要写代码获得具体的字体名称。方法如下:
NSArray *familys = [UIFont familyNames];
    for (NSString *family in familys) {
        NSLog(@"Fontfamily:%@", family);
        NSArray *fonts = [UIFont fontNamesForFamilyName:family];
        for (NSString *font in fonts) {
            NSLog(@"FontName:%@", font);
        }
    }

4、现在可以知道文字包里面的字体名称了,接下来使用就可以

lab.font = [UIFont fontWithName:@"Baskerville-Bold" size:30];

提示:

文字的使用可是有版权问题,程序中要想使用某些特殊的文字,必须得有版权,否则最好不要用,会有侵权问题。