zoukankan      html  css  js  c++  java
  • 关于Text Kit 一些事

    1. Text Kit 是什么?

           在iOS7中,苹果引入了Text Kit——Text Kit是一个高速而又现代化的文字排版和渲染引擎。Text Kit在UIKit framework中的定义了一些类和相关协议,它最基本的作用就是为程序提供文字排版和渲染的功能。在程序中。通过Text Kit能够对文字进行存储(store)、布局(lay out)。以及用最精细的排版方式(比如文字间距、换行和对齐等)来显示文本内容。苹果引入Text Kit的目的并不是要代替已有的Core Text,Core Text的主要作用也是用于文字的排版和渲染中,它是一种先进而又处于底层技术,假设我们须要将文本内容直接渲染到图形上下文(Graphics context)时,从性能和易用性来考虑。最佳方案就是使用Core Text。

    而假设我们直接利用苹果提供的一些控件(比如UITextView、UILabel和UITextField等)对文字进行排版,无疑就是借助于UIkit framework中Text Kit提供的API。

    2. Text Kit 能干什么?

    • 对文字进行分页或多列排版
    • 支持文字的换行、折叠和着色等处理
    • 能够调整字与字之间的距离、行间距、文字大小、指定特定的字体
    • 支持富文本编辑,能够自己定义文字截断
    • 支持动态样式
    • 支持凸版印刷效果(letterpress)
    • 围绕路径
    • 动态文本格式及存储
    • 支持数据类型的检測(比如链接、附件等)

         具体參考:http://blog.jobbole.com/51965/

    3. Text Kit 的架构 & 原理

           

    以下,我们通过图1(此图来自WWDC2013 Session 210)来了解一下Text Kit的架构。图1是基于iOS 7绘制的,从图中,我们能够看到Text Kit是基于Core Text构建的。它通过Core Text与Core Graphics进行交互。而UI控件(UILabel、UITextField和UITextView)则构建于Text Kit之上,可见这些文本控件能够利用Text Kit提供的API来对文字进行排版和渲染处理。从图中我们也能够看到SDK提供的UIWebView是基于WebKit的,它不能使用Text Kit提供的功能。

    图1 Text Kit在iOS 7 SDK中的位置图1 Text Kit在iOS 7 SDK中的位置

    我们再来看看图1中的相关组件在iOS6里面是怎样相应的,如图2所看到的,能够看出在iOS 6中是没有Text Kit,而且UILabel、UIText和UITextView是基于String Drawing和WebKit构建的。当中String Drawing是与Core Graphics直接通讯。

    图2 在iOS 6中并没有Text Kit

    图2 在iOS 6中并没有Text Kit

    原理 & 实践 牛人写的已经非常多了,具体參考例如以下链接

    破船出品

    http://beyondvincent.com/blog/2013/11/12/121-brief-analysis-text-kit/

    raywenderlich Tutorials(链接为中文)

    http://www.raywenderlich.com/zh-hans/53890/text-kit-%E6%95%99%E7%A8%8B%EF%BC%88%E4%B8%80%EF%BC%89

    http://www.raywenderlich.com/zh-hans/53889/text-kit-%E6%95%99%E7%A8%8B%EF%BC%88%E4%BA%8C%EF%BC%89



    4. 相关代码 && 进阶资料

    苹果官方演示样例:

    • IntroToTextKit

    苹果官方參考文档:

    • Text Programming Guide for iOS.pdf
    • Core Text Programming Guide
    • NSLayoutManager Class Reference for iOS.pdf
    • NSLayoutManagerDelegate Protocol Reference for iOS.pdf
    • NSTextContainer Class Reference for iOS.pdf
    • NSTextStorage Class Reference for iOS.pdf
    • NSTextStorageDelegate Protocol Reference for iOS.pdf

    wwdc视频:

    • Introducing Text Kit
    • Advanced Text Layouts and Effects with Text Kit
    • Using Fonts with Text Kit




  • 相关阅读:
    Go语言入门系列(三)之数组和切片
    详解Java的对象创建
    Go语言入门系列(二)之基础语法总结
    Go语言入门系列(一)之Go的安装和使用
    SpringCloud--Ribbon--配置详解
    自己动手作图深入理解二叉树、满二叉树及完全二叉树
    自已动手作图搞清楚AVL树
    《RabbitMQ》什么是死信队列
    《RabbitMQ》如何保证消息不被重复消费
    《RabbitMQ》如何保证消息的可靠性
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6816183.html
Copyright © 2011-2022 走看看