iOS UILable和属性字符串的使用
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和属性字符串的使用的更多相关文章
- 属性字符串(NSAttributedString)的简单应用
属性字符串NSAttributedString 可以对字符串附加格式信息,由于对于对不同文本片段使用不同的格式,属性字符串类特别合适. IOS 6中对样式文本有了大改善,大部分主要的UIKit控件都允 ...
- iOS开发-automaticallyAdjustsScrollViewInsets属性
iOS开发-automaticallyAdjustsScrollViewInsets属性 Available in iOS 7.0 and later. 简单点说就是automaticallyAdju ...
- 属性字符串的replaceCharactersInRange方法
一,实验: 1> 让 range 的 length 参数为0,以下代码输出属性字符串的结果为12354 NSMutableAttributedString *attrStr = [[NSMuta ...
- NSMutableAttributedString可变属性字符串的用法
适用于:当你想对一个字符串中的某几个字符更改颜色,字体... NSString *string = @"今日营养配餐提供热量1800千卡,需要饮食之外额外补充钙10mg,铁20mg,锌9.5 ...
- 有两个地方,用到了javabean对象和属性字符串值之间的转换
1.有两个地方,用到了javabean对象和属性字符串值之间的转换 2.一个是接入层spring mvc,将json字符串参数转换为javaBean.通过@RequestBody javaBean方式 ...
- IOS UITableView NSIndexPath属性讲解
IOS UITableView NSIndexPath属性讲解 查看UITableView的帮助文档我们会注意到UITableView有两个Delegate分别为:dataSource和deleg ...
- IOS学习5——属性与成员变量
[转]iOS中属性与成员变量的区别 ios中属性修饰符的作用 1. 属性用property声明 2. 简而言之,对于目前的ios开发,属性和成员变量的区别,完全可以不管. 3. 这个是历史原因造成的. ...
- [转]IOS UIView 之属性篇
[转载自:IOS UIView 之属性篇 From CSDN] UIView 继承于UIResponder 所遵守的协议有 NSCoding .UIAppearance. UI ...
- iOS Category 添加属性实现原理 - 关联对象
iOS Category 添加属性实现原理 - 关联对象 RunTime为Category动态关联对象 使用RunTime给系统的类添加属性,首先需要了解对象与属性的关系.对象一开始初始化的时候其属性 ...
随机推荐
- 基于 H5 Canvas 实现楼宇自控系统
前言 楼宇自控是指楼宇中电力设备,如电梯.水泵.风机.空调等,其主要工作性质是强电驱动.通常这些设备是开放性的工作状态,也就是说没有形成一个闭环回路.只要接通电源,设备就在工作,至于工作状态.进程.能 ...
- 数据可视化:绘图库-Matplotlib
为什么要绘图? 一个图表数据的直观分析,下面先看一组北京和上海上午十一点到十二点的气温变化数据: 数据: 这里我用一段代码生成北京和上海的一个小时内每分钟的温度如下: import random co ...
- Scss的使用场景
一.Scss 1.CSS有几个缺点 语法不够强大,没有变量和合理的样式复用机制 使得逻辑上相关的属性值必须以字面的形式重复输出,难以维护 动态的样式语言为css富裕了动态语言的特性 极大的提高了样式语 ...
- nyoj 1364-治安管理 (INT_MAX)
1364-治安管理 内存限制:128MB 时间限制:3000ms 特判: No 通过数:6 提交数:6 难度:2 题目描述: SZ市是中国改革开放建立的经济特区,是中国改革开放的窗口,已发展为有一定影 ...
- JavaWeb核心知识点
一:HTTP协议 一.概述 1. 概念:超文本传输协议 2. 作用:规范了客户端(浏览器)和服务器的数据交互格式 3. 特点 1. 简单快速:客户端向服务器请求服务时,仅通过键值对来传输请求方 ...
- SpringBoot学习(三)—— springboot快速整合swagger文档
目录 MyBatis 简介 引入mybatis组件 代码实战 MyBatis @ 简介 优点 最大的优点是SQL语句灵活,适合调优情景,业务复杂情景 劣势 最大的劣势是不同数据库之间的迁移 引入myb ...
- 查看Oracle的连接数
select count(*) from v$process --当前连接数 select count(*) from v$process where program='ORACLE.EXE(SHAD ...
- 理解Redis的反应堆模式
1. Redis的网络模型 Redis基于Reactor模式(反应堆模式)开发了自己的网络模型,形成了一个完备的基于IO复用的事件驱动服务器,但是不由得浮现几个问题: 为什么要使用Reactor模式呢 ...
- 【2018寒假集训 Day2】【动态规划】挖地雷
挖地雷(Mine) 在一个地图上有N 个地窖(N<=200),每个地窖中埋有一定数量的地雷.同时,给出地窖之间的连接路径,并规定路径都是单向的,且从编号小的地窖通向编号大的地窖.某人可以从任一处 ...
- PL真有意思(七):数据抽象和面向对象
前言 在之前的名字.作用域那篇提到模块类型,它使程序员可以从一个给定抽象出发,通过实例化产生多个实例:再后面是类,它使程序员可以定义一族相关的抽象. 在这一篇里,我们会来看一下面向对象程序设计及其三个 ...