今天主要介绍一下YYKit,这是一个对于快速开发较为丰富的第三方库。

YYKit 是一组功能丰富的 iOS 组件。GitHub:https://github.com/ibireme/YYKit

为了尽量复用代码,这个项目中的某些组件之间有比较强的依赖关系。为了方便其他开发者使用,从中拆分出以下独立组件:

  • YYModel — 高性能的 iOS JSON 模型框架。
  • YYCache — 高性能的 iOS 缓存框架。
  • YYImage — 功能强大的 iOS 图像框架。
  • YYWebImage — 高性能的 iOS 异步图像加载框架。
  • YYText — 功能强大的 iOS 富文本框架。
  • YYKeyboardManager — iOS 键盘监听管理工具。
  • YYDispatchQueuePool — iOS 全局并发队列管理工具。
  • YYAsyncLayer — iOS 异步绘制与显示的工具。
  • YYCategories — 功能丰富的 Category 类型工具库。

安装

CocoaPods

  1. 在 Podfile 中添加 pod 'YYKit'
  2. 执行 pod installpod update
  3. 导入 <YYKit/YYKit.h>。

Carthage

  1. 在 Cartfile 中添加 github "ibireme/YYKit"
  2. 执行 carthage update --platform ios 并将生成的 framework 添加到你的工程。
  3. 导入 <YYKit/YYKit.h>。
  4. 注意: carthage framework 并没有包含 webp 组件。如果你需要支持 webp,可以用 CocoaPods 安装,或者手动安装。

手动安装

  1. 下载 YYKit 文件夹内的所有内容。
  2. 将 YYKit 内的源文件添加(拖放)到你的工程。
  3. NSObject+YYAddForARC.mNSThread+YYAdd.m 添加编译参数 -fno-objc-arc
  4. 链接以下 frameworks:
    • UIKit
    • CoreFoundation
    • CoreText
    • CoreGraphics
    • CoreImage
    • QuartzCore
    • ImageIO
    • AssetsLibrary
    • Accelerate
    • MobileCoreServices
    • SystemConfiguration
    • sqlite3
    • libz
  5. 如果你需要支持 WebP,可以将 Vendor/WebP.framework(静态库) 加入你的工程。
  6. 导入 YYKit.h

注意

开发者希望调用 API 时,有着和调用系统自带 API 一样的体验,所以并没有为 Category 方法添加前缀。而且开发者已经用工具扫描过这个项目中的 API,确保没有对系统 API 产生影响,但即使这样没有前缀的 Category 也可能会带来其他麻烦。因此开发者不太推荐直接使用 YYKit 这个库,应该先尝试一下上面那些拆分出来的独立组件。

下面,我就以YYText为例简单介绍一下:(GitHub:https://github.com/ibireme/YYText)

功能强大的 iOS 富文本编辑与显示框架。

特性:

  • API 兼容 UILabel 和 UITextView
  • 支持高性能的异步排版和渲染
  • 扩展了 CoreText 的属性以支持更多文字效果
  • 支持 UIImage、UIView、CALayer 作为图文混排元素
  • 支持添加自定义样式的、可点击的文本高亮范围
  • 支持自定义文本解析 (内置简单的 Markdown/表情解析)
  • 支持文本容器路径、内部留空路径的控制
  • 支持文字竖排版,可用于编辑和显示中日韩文本
  • 支持图片和富文本的复制粘贴
  • 文本编辑时,支持富文本占位符
  • 支持自定义键盘视图
  • 撤销和重做次数的控制
  • 富文本的序列化与反序列化支持
  • 支持多语言,支持 VoiceOver
  • 支持 Interface Builder
  • 全部代码都有文档注释

YYText 和 TextKit 架构对比:

YYText 原生支持的属性

Demo Attribute Name Class
TextAttachment YYTextAttachment
TextHighlight YYTextHighlight
TextBinding YYTextBinding
TextShadow
TextInnerShadow
YYTextShadow
TextBorder YYTextBorder
TextBackgroundBorder YYTextBorder
TextBlockBorder YYTextBorder
TextGlyphTransform NSValue(CGAffineTransform)
TextUnderline YYTextDecoration
TextStrickthrough YYTextDecoration
TextBackedString YYTextBackedString

YYText 支持的 CoreText 属性

Demo Attribute Name Class
Font UIFont(CTFontRef)
Kern NSNumber
StrokeWidth NSNumber
StrokeColor CGColorRef
Shadow NSShadow
Ligature NSNumber
VerticalGlyphForm NSNumber(BOOL)
WritingDirection NSArray(NSNumber)
RunDelegate CTRunDelegateRef
TextAlignment NSParagraphStyle
(NSTextAlignment)
LineBreakMode NSParagraphStyle
(NSLineBreakMode)
LineSpacing NSParagraphStyle
(CGFloat)
ParagraphSpacing
ParagraphSpacingBefore
NSParagraphStyle
(CGFloat)
FirstLineHeadIndent NSParagraphStyle
(CGFloat)
HeadIndent NSParagraphStyle
(CGFloat)
TailIndent NSParagraphStyle
(CGFloat)
MinimumLineHeight NSParagraphStyle
(CGFloat)
MaximumLineHeight NSParagraphStyle
(CGFloat)
LineHeightMultiple NSParagraphStyle
(CGFloat)
BaseWritingDirection NSParagraphStyle
(NSWritingDirection)
DefaultTabInterval
TabStops
NSParagraphStyle
CGFloat/NSArray(NSTextTab)

常用到的效果如下图所示:

参考文章:

1.http://www.jianshu.com/p/60aee32ade55?nomobile=yes

2.http://www.cnblogs.com/lujianwenance/p/5716804.html

3.TTTAttributedLabel使用:http://www.jianshu.com/p/b457a49fac3d

TextDemo:http://download.csdn.net/detail/hbblzjy/9888702

iOS开发之YYKit丰富的组件,如:YYText相关推荐

  1. iOS开发之UI开发(UITableView)

    UITableView 继承自UIScrollView,性能极佳 UITableView的两种样式 UITableViewStylePlain列表样式 UITableViewStyleGrouped ...

  2. iOS开发之AVKit框架使用

    2019独角兽企业重金招聘Python工程师标准>>> iOS开发之AVKit框架使用 一.引言 在iOS开发框架中,AVKit是一个非常上层,偏应用的框架,它是基于AVFounda ...

  3. (0045) iOS 开发之MBProgressHUD 源码学习

    (0045) iOS 开发之MBProgressHUD 源码学习 第一部分:学习所得和分析线程 1.  学习到了kvo 的使用 和屏幕方向的旋转判断. 2. 如果调起这个 HUD 的方法不是在主线程调 ...

  4. (0016)iOS 开发之Mac上Navicat Premium 创建远程连接和本地连接

    1.下载安装 (百度云盘里面有安装文件和注册机) 链接: https://pan.baidu.com/s/1kVG1k71 密码: mr5g 破解教程看这篇博客:http://blog.csdn.ne ...

  5. 李洪强iOS开发之RunLoop的原理和核心机制

    李洪强iOS开发之RunLoop的原理和核心机制 搞iOS之后一直没有深入研究过RunLoop,非常的惭愧.刚好前一阵子负责性能优化项目,需要利用RunLoop做性能优化和性能检测,趁着这个机会深入研 ...

  6. IOS开发之MD5加密和钥匙串的使用-oc

    IOS开发之MD5加密和钥匙串的使用-oc 源码在我的主页,md5加密是用户登录安全的一个保障.不可逆的,可以暴力破解的. // // ViewController.m // MD5演练 // // ...

  7. IOS开发之CALayer基本属性和使用

    IOS开发之CALayer基本属性和使用 // // ViewController.m // CALayer // // Created by 鲁军 on 2021/2/21. //#import & ...

  8. ios开发之plist 的文件的读写以及沙盒容器路径打印

    ios开发之plist 的文件的读写以及沙盒容器路径打印 核心代码在这里 // // ViewController.m // 21-plist存储和沙盒路径 // // Created by 鲁军 o ...

  9. IOS开发之JSON文件的读写

    IOS开发之JSON文件的读写 // // ViewController.m // 20-JSON的读写 // // Created by 鲁军 on 2021/2/13. //#import &qu ...

  10. IOS开发之JSON序列化从客户端发送到服务器端

    IOS开发之JSON序列化从客户端发送到服务端的准备工作 共有6种情况 需要序列化 请查看源代码. 服务器端接受我们采用的是java的Tomcat服务器.配合 struts 2 controller框 ...

最新文章

  1. 李飞飞团队最新论文:基于anchor关键点的类别级物体6D位姿跟踪
  2. 输入法项目-用delphi生成GBK 中文编码 表(4~5) GBK/4~5: 0xAA40~0xFEA0(部分) 扩充汉字 包括繁体 0xA840~0xA995(部分) 扩充非汉字...
  3. Akka(9): 分布式运算:Remoting-远程构建式
  4. 用border画三角形
  5. Hibernate VS Mybatis 的SQL不灵活通病如何解决?
  6. 浅谈opencl之整体框架
  7. RISC 和 CISC 区别
  8. 安装报错_MySQL8.0安装后,报错ERROR 1045 (28000)
  9. 方法区jdk1.7,1.8版本的构造变化
  10. 手工机器人的做法大全用易拉罐_快来吃“智能机器人炒饭”啦!顾客:比人工炒饭还好吃!...
  11. 顺序表(线性表的顺序存储)---C语言版
  12. mysql grant tables_使用SKIP-GRANT-TABLES 解决 MYSQL ROOT密码丢失
  13. 宝塔面板部署python项目
  14. 计算机模拟仿真技术的功能,浅谈虚拟仿真技术
  15. photoshop下载教程
  16. 计算机病毒是指源程序还是特殊小程序,2015年9月计算机一级考试Msoffice上机模拟题(五)...
  17. 网络间谍:你的共享文件夹网络监视器
  18. JZOJ100047. 【NOIP2017提高A组模拟7.14】基因变异
  19. Win10播放视频卡顿怎么解决
  20. 养老保险不到60岁能领吗

热门文章

  1. java并发编程电子书免费送???
  2. EM最大期望算法与jensen不等式
  3. 微型计算机控制技术赖寿宏版课后答案,微型计算机控制技术答案(赖寿宏)
  4. python 端口扫描_Python实现的端口扫描功能
  5. 老王的常用资源下载(全部附CSDN资源链接 12月19日 更新RetopoFlow3至3.00.2)
  6. linux firefox 解雇ie,Fire IE
  7. Java位运算符:Java移位运算符、复合位赋值运算符及位逻辑运算符
  8. RubyOnRails环境搭建
  9. 1500个前端开发常用JavaScript特效
  10. 扫雷代码下载地址可以打开啦!