我试图用下载的字体绘制一些文字。我查看了API文档并搜索了Web。我找到了一个解决方案,但问题是它只适用于CoreGraphics
级框架。所以我搜索了将CGFont
转换为UIFont
的方法,但没有办法做到这一点。
我意识到UIFont
和CGFont/CTFont
完全分开,即使它们是从相同的字体文件创建的。 CGFont
和CTFont
可以相互转换,但对于UIFont
,唯一的方法是使用名称和大小等属性进行重新创建。适用的代码也是分开的。
例如,CATextLayer
仅接受CGFont
/ CTFont
- 否UIFont
。但是,所有UIKit
控件都只接受UIFont
。
为什么存在这种分离?还是我错了? (在UIKit
类中使用下载字体的任何方式?)
答案 0 :(得分:18)
答案简短:“只有Apple人知道”
在挖掘(逆转)框架后,更详细的答案:
UIKit.framework
未使用 CGFont
类型UIKit.framework
使用CoreText CTFont
和GSFont
... GSFont
来自...... GraphicsServices
私人框架GraphicsServices
...使用CGFont
所以这是我的猜测(可能完全错误):
UIFont
> GSFont
(私人)> CGFont
UIKit
> GraphicsServices
> CoreGraphics
:
至少关于字体,Apple工程师在
UIKit
之间设置了一个抽象层 和CoreGraphics
框架,通过阻碍GraphicsServices
一个。
iOS
> iOS
(私人)> Mac OSX
:
为什么他们这样做,我会说来自Mac OSX的
CoreGraphics
对iOS设备不是最佳的,UIKit
只是iOS,他们在两个apis之间添加了一层。或者更一般地,他们计划有一天将UIKit与CoreGraphics完全分开......来自Mac OSX的iOS ......谁知道! 苹果人,我的简短回答:)
关于在UIKit
中使用自定义字体,您可能会对阅读this感兴趣。