[iOS]中字体样式设置 API

2,243 阅读2分钟

今天项目需求里要求给文字设置字体样式, 以前的工作中并没有涉及字体样式的设置, 后来在网上找到了相关的方法, 这里总结一下.

CocoaUIKit 框架中为开发者提供了高层次的 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 就是倾斜等.

拿到字体族科和字样名称以后,你就可以直接使用代码设置文字的字样了。

如下 mouthLUILabel 的一个实例对象,可以使用 UIFontlabelfont 属性赋值,运行代码,你就会发现,字体神奇的发生了变化。

mouthL.font = [UIFont fontWithName:@"PingFangTC-Light" size:11];

NewPan 的文章集合

下面这个链接是我所有文章的一个集合目录。这些文章凡是涉及实现的,每篇文章中都有 Github 地址,Github 上都有源码。

NewPan 的文章集合索引

如果你有问题,除了在文章最后留言,还可以在微博 @盼盼_HKbuy 上给我留言,以及访问我的 Github