今天项目需求里要求给文字设置字体样式, 以前的工作中并没有涉及字体样式的设置, 后来在网上找到了相关的方法, 这里总结一下.
作者写了一个给 iPhone X 去掉刘海的 APP,而且其他 iPhone 也可以玩,有兴趣的话去 App Store 看看。点击前往。

Cocoa
在 UIKit
框架中为开发者提供了高层次的 API
以及方便的枚举、加载和使用字体。Cocoa Touch
使用 UIFont
类来封装字体。每个 iOS 设备都内置了系统字体。
01.Xib
或者 Storyboard
如果是在 Xib
或者 Storyboard
中你可以通过, 比如说 UILabel
,你可以同过设置它的属性来直接设置字体样式:
-
点击向右箭头会弹出2、3所示的弹窗
-
点击font会有系统(System)和自定义(Custom)等选项
-
如果你选择 System 默认就是苹方字体,此时你只能设置比如 regular、light、thin 等;但是如果你选择 Custom,就会弹出一大串字体名称供你选择,用什么就选什么,很方便。

02.代码中
如果你是在代码中设置文字字体,你就必须知道更多,请往下看。
字体被组织成字体族科(Families),每个族科又包含字样(Faces)。例如,Helvetica 是一个字体族科,Helvetica Bold是 Helvetica 族科中的一个字样。
要加载字体,你必须知道字体的字样(字体的名字),要知道字样,你必须知道它的族科。
怎么获取系统字体的族科呢,我们可以循环输出系统字体族科,使用 UIFont
类的familyNames
类方法,通过这个类方法得到字体族科名字然后用 UIFont
类的fontNamesForFamilyName:
类方法,传递 family name
作为参数,并返回一个字体名称的数组(array):
for(NSString *familyName in [UIFont familyNames]) {
NSLog(@"Font FamilyName = %@",familyName); // 输出字体族科名字
for(NSString*fontName in [UIFont fontNamesForFamilyName:familyName]){
NSLog(@"\t%@",fontName); // 输出字体族科下字样名字
}
}
在 iOS 模拟器上运行代码,得到如下结果:
...
Font Family = Geeza Pro
GeezaPro
GeezaPro-Bold
Font Family = Helvetica Neue
HelveticaNeue-Italic
HelveticaNeue-Bold
...
字体族科后面加-Bold
就是加粗, 加 -Oblique
就是倾斜等.
拿到字体族科和字样名称以后,你就可以直接使用代码设置文字的字样了。
如下 mouthL
是 UILabel
的一个实例对象,可以使用 UIFont
给 label
的 font
属性赋值,运行代码,你就会发现,字体神奇的发生了变化。
mouthL.font = [UIFont fontWithName:@"PingFangTC-Light" size:11];
我的文章集合
下面这个链接是我所有文章的一个集合目录。这些文章凡是涉及实现的,每篇文章中都有 Github 地址,Github 上都有源码。
你还可以关注我自己维护的简书专题 iOS开发心得。这个专题的文章都是实打实的干货。如果你有问题,除了在文章最后留言,还可以在微博 @盼盼_HKbuy上给我留言,以及访问我的 Github。
赞助
你这一赞助,我写的就更来劲了!
微信赞助扫码

支付宝赞助扫码

网友评论