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

提示:

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

iOS UILable和属性字符串的使用的更多相关文章

  1. 属性字符串(NSAttributedString)的简单应用

    属性字符串NSAttributedString 可以对字符串附加格式信息,由于对于对不同文本片段使用不同的格式,属性字符串类特别合适. IOS 6中对样式文本有了大改善,大部分主要的UIKit控件都允 ...

  2. iOS开发-automaticallyAdjustsScrollViewInsets属性

    iOS开发-automaticallyAdjustsScrollViewInsets属性 Available in iOS 7.0 and later. 简单点说就是automaticallyAdju ...

  3. 属性字符串的replaceCharactersInRange方法

    一,实验: 1> 让 range 的 length 参数为0,以下代码输出属性字符串的结果为12354 NSMutableAttributedString *attrStr = [[NSMuta ...

  4. NSMutableAttributedString可变属性字符串的用法

    适用于:当你想对一个字符串中的某几个字符更改颜色,字体... NSString *string = @"今日营养配餐提供热量1800千卡,需要饮食之外额外补充钙10mg,铁20mg,锌9.5 ...

  5. 有两个地方,用到了javabean对象和属性字符串值之间的转换

    1.有两个地方,用到了javabean对象和属性字符串值之间的转换 2.一个是接入层spring mvc,将json字符串参数转换为javaBean.通过@RequestBody javaBean方式 ...

  6. IOS UITableView NSIndexPath属性讲解

    IOS UITableView NSIndexPath属性讲解   查看UITableView的帮助文档我们会注意到UITableView有两个Delegate分别为:dataSource和deleg ...

  7. IOS学习5——属性与成员变量

    [转]iOS中属性与成员变量的区别 ios中属性修饰符的作用 1. 属性用property声明 2. 简而言之,对于目前的ios开发,属性和成员变量的区别,完全可以不管. 3. 这个是历史原因造成的. ...

  8. [转]IOS UIView 之属性篇

    [转载自:IOS UIView 之属性篇 From CSDN] UIView 继承于UIResponder             所遵守的协议有 NSCoding .UIAppearance. UI ...

  9. iOS Category 添加属性实现原理 - 关联对象

    iOS Category 添加属性实现原理 - 关联对象 RunTime为Category动态关联对象 使用RunTime给系统的类添加属性,首先需要了解对象与属性的关系.对象一开始初始化的时候其属性 ...

随机推荐

  1. React第一次渲染为何容易出现TypeError: Cannot read property 'XX' of undefined

    此题可能大家会不屑一顾,哎,错误都给你怼脸上了你还不会嘛,其实大家有没有认真思考过这其中的原因.先上一张错误图,剩余的全靠编.没兴趣看图的老铁们可以拉到最底下直接看结论 错误:  代码: 其次,我再把 ...

  2. php编辑器notepad++ 推荐一款非常好看主题和字体

    php编辑器notepad++ 推荐一款非常好看主题和字体1.主题名称:Obsidian 2.字体字号:Courier New 10 3.设置方法:设置---语言格式设置---选择主题,同时勾选“使用 ...

  3. ajax传出数组到后台

    var vote = new Array();    $("input[name='option_name']").each(function(i){        if($(th ...

  4. Unity - Cinemachine实现相机抖动

    普通相机抖动脚本较易实现,但在使用cinemachine相机下,其Transform组件不可被代码改变,那么Cinemachine的相机抖动如何实现呢?本文结合实际项目,对实现相机抖动的三大步骤进行系 ...

  5. 【Spring】Spring的定时任务注解@Scheduled原来如此简单

    1 简介 定时任务的实现非常多,JDK的Timer.Spring提供的轻量级的Scheduled Task.QuartZ和Linux Cron等,还有一些分布式的任务调度框架.本文主要介绍Schedu ...

  6. 理解Spark运行模式(二)(Yarn Cluster)

    上一篇说到Spark的yarn client运行模式,它与yarn cluster模式的主要区别就是前者Driver是运行在客户端,后者Driver是运行在yarn集群中.yarn client模式一 ...

  7. spring源码1

    1.beans核心类 1.DefaultListableBeanFactory xmlBeanFactory xmlBeanFactory继承自DefaultListableBeanFactory,D ...

  8. yum 配置文件 以及 语法

    yum的配置文件 #vi /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache= debugleve ...

  9. MySQL数据库root账户密码忘记两种处理方法(保有效)

    方法1: 1.停止MySQL服务 # kill `cat /var/run/mysqld/mysqld.pid` 或者 # pkill mysqld 2.创建一个密码赋值语句的文本文件 # vi my ...

  10. PostGIS 报错为org.postgresql.util.PSQLException:错误: Operation on mixed SRID geometries

    说明: 在用Openlayers与Geoserver进行开发,做在线编辑功能时,出现一个问题:每当我新增了一根要素后,再次用wfs的方式进行点击查询时,会报错mixed SRID. 通过研究发现在数据 ...