首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么UIFont和CGFont/CTFont完全分离?

为什么UIFont和CGFont/CTFont完全分离?
EN

Stack Overflow用户
提问于 2011-04-27 11:52:18
回答 1查看 3.9K关注 0票数 14

我正在尝试用下载的字体绘制一些文本。我查看了API文档并在Web上进行了搜索。我找到了一个解决方案,但问题是它只适用于CoreGraphics级别的框架。所以我寻找了一种将CGFont转换为UIFont的方法,但是没有办法做到这一点。

我意识到UIFontCGFont/CTFont是完全分开的,即使它们是从相同的字体文件创建的。CGFontCTFont可以相互转换,但对于UIFont,唯一的方法是使用名称和大小等属性重新创建。并且适用的代码也是分开的。

例如,CATextLayer只接受CGFont/CTFont -不接受UIFont。但是所有的UIKit控件都只接受UIFont

为什么会存在这种分离呢?还是我错了?(有没有办法在UIKit类中使用下载的字体?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-27 18:06:22

简单的回答是:“只有苹果人知道”。

在深入挖掘(反向)框架之后,更详细的答案是:

  • UIKit.framework根本不使用type
  • UIKit.framework,而是使用GSFont...
  • GSFont CGFont CoreText CTFont ...GraphicsServices私有framework
  • GraphicsServices...使用CGFont

下面是我的猜测(可能完全错了):

  • UIFont >私有GSFont__> CGFont
  • UIKit > GraphicsServices > CoreGraphics

至少在字体方面,苹果的工程师已经通过GraphicsServices one在UIKitCoreGraphics框架之间建立了一个抽象层。

  • iOS > iOS (专用)> Mac OSX

为什么他们这样做,我想说的是,来自Mac的CoreGraphics对于iOS设备来说并不是最优的,而UIKit仅仅是iOS,他们在两个apis之间增加了一层。或者更广泛地说,他们计划有一天完全从CoreGraphics中分离出UIKit……来自Mac的iOS ...谁知道呢!我的简短回答是:)

关于在UIKit中使用自定义字体,您可能会对阅读this感兴趣。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5799128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档