关于Text Kit 一些事

用TextKit搞点事情 先搞清楚族谱 再搞清楚架构 TextKit框架主要的几个View,主要包括UILabel, UITextView, UITextField; TextKit是NS一支的,所以不光只在iOS中使用; Text container对应NSTextContainer,它定义了文本排版区域,很明显,文字是在这个区域中被管理的; Text storag... 阅读详情

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




70、iOS 文本视图与 Text Kit 技术深度解析 本文深入解析了 iOS 中 UITextView 与 Text Kit 技术的应用,涵盖了自适应大小的文本视图、文本视图与键盘交互、Text Kit 核心类及其使用方式、文本容器的自定义、布局管理器的几何概念与绘制等内容。通过丰富的代码示例和应用场景总结,展示了如何利用 Text Kit 实现灵活的文本处理功能,如多列布局、同步文本编辑、自定义文本显示形状、点击事件响应以及特殊文本样式绘制等。适合希望深入了解 iOS 文本处理机制的开发者参考。 阅读详情

相关推荐

71、iOS开发:Text Kit与WKWebView的深入应用

本文深入探讨了iOS开发中两个重要组件Text Kit与WKWebView的应用。通过Text Kit,开发者可以在任何图形上下文中实现灵活的文本布局与交互效果,如两列文本显示、动态高亮等,极大提升了文本处理能力。而WKWebView则提供了一个功能强大的Web浏览器组件,支持多种内容加载方式与精细的配置选项,适用于混合开发、在线内容展示等场景。文章还总结了两者的优势、拓展应用场景及开发注意事项,帮助开发者构建更高质量的iOS应用。

grpc6streamer的博客 56

诚心被骗

昨天一大早,看见有个同学在群里说要开题了,一下子觉得有些慌了,她还在上面发了一个开题的报告纸,于是我想向她要一份,这样我和她就顺便聊了两句.后来,她突然说想让我帮一个忙,由于我平时和她关系也还不错吧,她找我帮忙我还是要帮的吧,我说可以呀,她告诉我她说她现在有些忙,想让我帮她给她的同学寄点钱,她同学急用.我当时觉得有些像小说,不真实,但又怕是真实,这样又伤了大家的和气,就应允下来了.于是我就回去宿舍

jimmy212的专栏 877

从光斑图到锤形优化:一次搞定Zemax双胶合透镜的像散与场曲问题

本文详细解析了Zemax双胶合透镜设计中像散与场曲问题的诊断与优化方法。从光斑图分析到锤形优化技巧,提供了完整的光学设计实战指南,帮助设计师快速定位问题并有效改善系统性能,特别适合光学设计工程师和Zemax使用者参考。

weixin_27134495的博客 233

TextKit简单用法(图文混排)

@interface ViewController () {     UIImageView *imageView;     UITextView *textView; } @property(nonatomic, assign)CGPoint gestureStartingPoint; @property(nonatomic, assign)CGPoint gesture

liu__000的专栏 521

瑞芯微RK3588系统重装实战:从Windows到Linux的完整烧录指南

本文提供了一份详尽的瑞芯微RK3588开发板系统重装实战指南,涵盖从Windows到Linux双平台的完整烧录流程。针对RK3588芯片特性,详细解析了驱动安装、工具使用、固件烧录步骤及常见问题排错,旨在帮助开发者高效、安全地完成系统切换与部署,快速投入AI推理与边缘计算等应用开发。

weixin_29164185的博客 360

LightRAG实战:5分钟快速搭建一个轻量级法律问答系统(附完整代码)

本文通过实战指南,详细介绍了如何使用LightRAG技术快速搭建一个轻量级法律问答系统。该方案通过构建扁平化实体关系网络和混合检索策略,在5分钟内即可完成从环境准备到智能问答的完整流程,并附有完整代码,为中小团队和个人开发者提供了高效、低成本的AI应用解决方案。

time3的博客 278

CSS字体样式属性调试

CSS字体样式属性调试 1.font-size font-size属性用于设置字号 p { font-size:20px; 2.font-family font-family用于设置字体 p { font-family:"Mirsoft YaHei"; } 网页中常用字体有宋体,微软雅黑,黑体等 可以同时指定多个字体,中间以逗号隔开,表示如果浏览器不支持第一个字体,则会尝试下一个,直到找到合适的字体,如果都没有,则以我们电脑默认的字体为准。 p { font-family:"Mirsoft YaHei"

Web_chicken的博客 8218

Xilinx XDMA IP核配置实战:AXI Memory Mapped vs Stream选型指南(附PCIe调试技巧)

本文深入解析Xilinx XDMA IP核配置中AXI Memory Mapped与AXI Stream两种DMA接口的核心区别与选型策略。针对PCIe高速数据传输场景,详细对比了二者在数据特性、延迟、硬件资源及软件复杂度上的差异,为FPGA工程师在数据采集、实时处理等项目中做出高效设计决策提供实战指南,并附有关键的PCIe调试技巧。

qsc901234的博客 585

在UITextView显示HTML,以及NSAttributedString乱码问题解决 swift

说明 当你要显示html到UILabel,UITextView的时候,需要把html字符串,转换为NSAttributedString. 最好情况下,加个String的extension。 extension String { private var convertHtmlToNSAttributedString: NSAttributedString? { guard l...

AI架构师易筋 3103

PythonOCC基础使用:建模——倒角倒圆(二维+三维)

占坑

weixin_42755384的博客 4639

【图像检测】基于MATLAB的火灾监测系统设计

1 简介 针对传统火灾监测系统对于大空间的室内场合和开阔的室外环境易失效的问题,提出了一种结合火灾火焰特征和烟雾特征来进行判断的数字图像型火灾监测算法.火焰颜色特征是基于RGB颜色模型中的R,G,B三基色分量和它们之间的关系来判断是否有火焰发生,烟雾模型特征是图像灰度化预处理后,基于HIS空间模型提取的,通过计算像素点与基准像素点之间距离D的大小来判断是否有火灾发生.对提出的算法进行MATLAB仿真,并和传统的基于五种算子的边缘检测算法提取火焰烟雾特征进行对比.实验结果表明,提出的火焰特征和烟雾特征提取算

qq_59747472的博客 2797

Animated Text Kit 技术文档

### 1.1 依赖添加 首先,在你的项目 `pubspec.yaml` 文件中添加 `animated_text_kit` 依赖: ```yaml dependencies: animated_text_kit: ^4.2.2 ``` ### 1.2 安装依赖 通过命令行安装依赖包: 使用 `pub`: ```sh $ pub get ``` 使用 `Flutter`: ``

gitblog_01273的博客 856

工业级稳定!C# 实现 Modbus RTU 多设备并发通信实战

摘要:本文提出一种基于C#的Modbus RTU多设备并发通信方案,解决工业自动化中单线程通信的串口抢占、数据阻塞等问题。采用任务队列+线程安全锁+异步调度的三层架构,实现16台及以上RTU设备的稳定并发读写。方案包含串口管理单例、Modbus通信核心和任务调度层,支持超时重试、异常捕获等工业级容错机制。通过NModbus库和.NET框架,提供可直接用于工业现场的代码实现,已在工控项目中长期验证,有效提升多设备通信效率和稳定性。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 581

orga分词器源码剖析:基于text-kit读取器的lexer逐行设计解读

orga 是 orgajs 中解析 org-mode 文本的核心包,它的分词器(lexer)建立在 text-kit 读取器之上,把原始文本流式地切成语法 Token,再交给上层解析器组装成 AST。本文带你逐行读懂这条「读取器 → 分词器 → 解析器」链路,看清一个简洁的 org-mode lexer 是如何设计的。 ## 分词器在整个解析链路中的位置 🧩 org-mode 解析分两步走:

gitblog_00173的博客 790

上机任务一:空气质量指数 (air quality index,AQI是定量描述空气质量状况的指数。为了更好地了解和人们身体健康息息相关的天气状况,本书模拟生成500条某地区天气数据,一行样本对应一天

调整后的R平方为0.4308,考虑了模型中的自由度,它略低于多重R平方,说明模型的解释能力可能有限。总的来说,新的模型相对于之前的模型在AIC值上更优,包含了最高温度(X2)和最低温度(X3)这两个重要的预测因子,并且对AQI的解释能力较好。在表中,Df表示自由度,Sum Sq表示总平方和,Mean Sq表示均方(总平方和除以自由度),F value表示F统计量,Pr(>F)表示对应的p值。在分析这些结果时,需要关注系数的显著性(p值),系数的方向(正向或负向影响),以及系数的大小(估计值)。

Mrrunsen的博客 723

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Animated-Text-Kit 项目下载及安装教程

Animated-Text-Kit 是一个 Flutter 包,用于创建酷炫且美观的文本动画。它包含了多种文本动画效果,如旋转、渐变、打字机效果等。该项目已被 Flutter 官方推荐为 Flutter Favorite Package,适用于需要在应用中添加动态文本效果的开发者。 ## 2. 项目下载位置 要下载 Animated-Text-Kit 项目,请访问项目的 GitHub 仓库。你

gitblog_01268的博客 791

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ios开发text kit_iOS 7 教程:浅析Text Kit

Text Kit是iOS 7中引入的一个新功能,非常值得开发者使用,下面先看看本文的目录结构:什么是Text Kit在iOS7中,苹果引入了Text Kit——Text Kit是一个快速而又现代化的文字排版和渲染引擎。Text Kit在UIKit framework中的定义了一些类和相关协议,它最主要的作用就是为程序提供文字排版和渲染的功能。在程序中,通过Text Kit可以对文字进行存储(sto...

weixin_34247523的博客 215

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ios开发text kit_第9章 iOS 7中文字排版和渲染引擎——Text Kit

第 9 章 iOS 7中文字排版和渲染引擎——Text Kit在iOS 7之前,应用中字体的大小用户是不能设置的,而且开发人员要想实现多种样式的文字排版是件非常麻烦的事情。在iOS 7之后,这些问题都解决了,Text Kit就是解决这些问题的钥匙。本章将向大家介绍iOS 7中文字排版和渲染引擎——Text Kit。9.1 Text Kit基础Text Kit最主要的作用就是为程序提供文字排版和渲染...

weixin_39770416的博客 452

Animated-Text-Kit 动画文本组件使用指南

Animated-Text-Kit 是一个强大的 Flutter 动画文本库,提供了多种炫酷的文本动画效果。本文将详细介绍如何使用这个库中的各种动画组件,帮助开发者快速实现专业级的文本动画效果。 ## 基础配置 所有动画组件都支持以下基础配置参数: ```dart duration: Duration(milliseconds: 2000), // 控制动画持续时间 isRepeatingA

gitblog_00202的博客 513

Flutter for OpenHarmony 实战:animated_text_kit 灵动文字动效与教育场景交互

本文介绍了如何在OpenHarmony平台使用Flutter的animated_text_kit插件实现文字动效,特别适用于教育类应用场景。文章首先分析了文字动效在吸引用户注意力和情感化设计方面的价值,随后详细讲解了插件集成方法和三种典型动效的实现:打字机效果、液体填充效果和旋转文字效果。针对鸿蒙设备特性,提供了性能优化建议,包括使用RepaintBoundary隔离重绘区域和字体预加载。最后给出一个完整的示例代码,展示了多种动效组合的实现方式。这些动态文字效果能显著提升应用交互体验,特别适合教育类、工具类

大山哥 1万+

ML Kit - ML Kit 文字识别(ML Kit 概述、ML Kit 文字识别、文本提取、补充情况)

ML Kit - ML Kit 文字识别(ML Kit 概述、ML Kit 文字识别、文本提取、补充情况)

weixin_52173250的博客 1829

HumanML3D与KIT-ML数据集全解析:text-to-motion训练数据准备攻略

text-to-motion技术是CVPR2022的重要研究成果,能够从文本描述生成多样化、自然的3D人体运动。本文将详细解析HumanML3D与KIT-ML这两个核心数据集的准备流程,帮助开发者快速搭建text-to-motion模型的训练环境。 ## 核心数据集概述 text-to-motion项目主要依赖两个3D人体运动-语言数据集:HumanML3D和KIT-ML。这两个数据集为模型提

gitblog_00844的博客 364

ios开发text kit_iOS富文本(三)深入使用Text Kit

在上一篇中介绍了Text Kit的三种基本组件的关系并且简单的实现了怎么使用这三种基本组件,本片将深入的去使用这三种基本组件。NSTextStorageNSTextStorage是NSMutableAttributedString的子类,根据苹果官方文档描述是semiconcrete子类,因为NSTextStorage没有实现NSMutableAttributedString中的方法,所以说NST...

weixin_39988164的博客 418

【亲测免费】 Animated-Text-Kit:文本动画的Flutter解决方案

Animated-Text-Kit 是一个开源的Flutter包,主要使用Dart编程语言开发。这个项目提供了一系列文本动画效果,可以帮助Flutter开发者轻松实现丰富的文本展示效果。 ## 核心功能 该项目的主要功能是提供多种文本动画效果,包括但不限于以下几种: - **旋转动画**:文字围绕中心点旋转。 - **淡入淡出动画**:文字逐渐显示和消失。 - **打字机效果**:文字像打字机一...

gitblog_00605的博客 549

wechat_kit与wechat_kit_extension:扩展功能使用指南

wechat_kit是一款专为Flutter开发者打造的微信登录/分享/支付SDK,而wechat_kit_extension则是其强大的功能扩展工具。本文将为你详细介绍如何利用这两个工具快速实现微信相关功能,让你的Flutter应用轻松集成微信生态服务。 [![wechat_kit应用图标](https://raw.gitcode.com/gh_mirrors/we/wechat_kit/ra

gitblog_01053的博客 1105
上一篇: iPhone、iPad、iPadMini界面设计标准
下一篇: IOS 应用程序国际化
skyming
博客等级 码龄15年 249粉丝 175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值