2011-04-27 15 views
14

Estaba intentando dibujar texto con una fuente descargada. Miré la documentación de la API y busqué en la Web. Encontré una solución, pero el problema es que solo se aplica al marco de nivel CoreGraphics. Así que busqué la manera de convertir CGFont en UIFont, pero no había forma de hacerlo.¿Por qué UIFont y CGFont/CTFont están separados por completo?

Me di cuenta de UIFont y CGFont/CTFont están separados por completo, a pesar de que están creados desde el mismo archivo de fuente. CGFont y CTFont son convertibles entre sí, pero para UIFont, la única manera es recrear con sus atributos como nombre y tamaño. Y los códigos aplicables también están separados.

Por ejemplo, CATextLayer acepta solo CGFont/CTFont - no UIFont. Pero todos los controles UIKit solo aceptan UIFont.

¿Por qué existe esta separación? ¿O estoy equivocado? (Cualquier manera de utilizar una fuente descargada en UIKit clases?)

Respuesta

17

La respuesta corta: "Sólo las personas Apple sabe"

La respuesta más detallada, después de cavar (marcha atrás) marcos de un bit:

  • UIKit.framework no utiliza en todo tipoCGFont
  • UIKit.framework uso en lugar CoreText CTFont y GSFont ...
  • GSFont ... proviene de la GraphicsServices marco privada
  • GraphicsServices ... utilizar CGFont

Así que aquí está mi conjetura (puede ser completamente mal):

  • UIFont>GSFont (privada)>CGFont
  • UIKit>GraphicsServices>CoreGraphics:

    Al menos Con respecto a las fuentes, los ingenieros de Apple han creado una capa de abstracción entre UIKit y CoreGraphics marcos, a través de la obscur GraphicsServices uno.

  • iOS>iOS(privada)>Mac OSX:

    Por qué hicieron esto, yo diría CoreGraphics, que viene de Mac OS X, no era óptima para los dispositivos IOS, y UIKit siendo solo iOS, agregaron una capa entre ambas apis. O, en términos más generales, planean separar un día por completo UIKit de CoreGraphics ... iOS de Mac OSX ... ¡Quién sabe! La gente de Apple no, mi respuesta corta :)

Acerca del uso de fuentes personalizadas con UIKit, que podría estar interesado lectura this.

Cuestiones relacionadas