我正在尝试用下载的字体绘制一些文本。我查看了API文档并在Web上进行了搜索。我找到了一个解决方案,但问题是它只适用于CoreGraphics级别的框架。所以我寻找了一种将CGFont转换为UIFont的方法,但是没有办法做到这一点。
我意识到UIFont和CGFont/CTFont是完全分开的,即使它们是从相同的字体文件创建的。CGFont和CTFont可以相互转换,但对于UIFont,唯一的方法是使用名称和大小等属性重新创建。并且适用的代码也是分开的。
例如,CATextLayer只接受CGFont/CTFont -不接受UIFont。但是所有的UIKit控件都只接受UIFont。
为什么会存在这种分离呢?还是我错了?(有没有办法在UIKit类中使用下载的字体?)
发布于 2011-04-27 18:06:22
简单的回答是:“只有苹果人知道”。
在深入挖掘(反向)框架之后,更详细的答案是:
UIKit.framework根本不使用typeUIKit.framework,而是使用GSFont...GSFont CGFont CoreText CTFont ...GraphicsServices私有frameworkGraphicsServices...使用CGFont下面是我的猜测(可能完全错了):
UIFont >私有GSFont__> CGFontUIKit > GraphicsServices > CoreGraphics:至少在字体方面,苹果的工程师已经通过GraphicsServices one在UIKit和CoreGraphics框架之间建立了一个抽象层。
iOS > iOS (专用)> Mac OSX:为什么他们这样做,我想说的是,来自Mac的CoreGraphics对于iOS设备来说并不是最优的,而UIKit仅仅是iOS,他们在两个apis之间增加了一层。或者更广泛地说,他们计划有一天完全从CoreGraphics中分离出UIKit……来自Mac的iOS ...谁知道呢!我的简短回答是:)
关于在UIKit中使用自定义字体,您可能会对阅读this感兴趣。
https://stackoverflow.com/questions/5799128
复制相似问题