iOS开发之YYKit丰富的组件,如:YYText
今天主要介绍一下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
- 在 Podfile 中添加
pod 'YYKit'
。 - 执行
pod install
或pod update
。 - 导入 <YYKit/YYKit.h>。
Carthage
- 在 Cartfile 中添加
github "ibireme/YYKit"
。 - 执行
carthage update --platform ios
并将生成的 framework 添加到你的工程。 - 导入 <YYKit/YYKit.h>。
- 注意: carthage framework 并没有包含 webp 组件。如果你需要支持 webp,可以用 CocoaPods 安装,或者手动安装。
手动安装
- 下载 YYKit 文件夹内的所有内容。
- 将 YYKit 内的源文件添加(拖放)到你的工程。
- 为
NSObject+YYAddForARC.m
和NSThread+YYAdd.m
添加编译参数-fno-objc-arc
。 - 链接以下 frameworks:
- UIKit
- CoreFoundation
- CoreText
- CoreGraphics
- CoreImage
- QuartzCore
- ImageIO
- AssetsLibrary
- Accelerate
- MobileCoreServices
- SystemConfiguration
- sqlite3
- libz
- 如果你需要支持 WebP,可以将
Vendor/WebP.framework
(静态库) 加入你的工程。 - 导入
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相关推荐
- iOS开发之UI开发(UITableView)
UITableView 继承自UIScrollView,性能极佳 UITableView的两种样式 UITableViewStylePlain列表样式 UITableViewStyleGrouped ...
- iOS开发之AVKit框架使用
2019独角兽企业重金招聘Python工程师标准>>> iOS开发之AVKit框架使用 一.引言 在iOS开发框架中,AVKit是一个非常上层,偏应用的框架,它是基于AVFounda ...
- (0045) iOS 开发之MBProgressHUD 源码学习
(0045) iOS 开发之MBProgressHUD 源码学习 第一部分:学习所得和分析线程 1. 学习到了kvo 的使用 和屏幕方向的旋转判断. 2. 如果调起这个 HUD 的方法不是在主线程调 ...
- (0016)iOS 开发之Mac上Navicat Premium 创建远程连接和本地连接
1.下载安装 (百度云盘里面有安装文件和注册机) 链接: https://pan.baidu.com/s/1kVG1k71 密码: mr5g 破解教程看这篇博客:http://blog.csdn.ne ...
- 李洪强iOS开发之RunLoop的原理和核心机制
李洪强iOS开发之RunLoop的原理和核心机制 搞iOS之后一直没有深入研究过RunLoop,非常的惭愧.刚好前一阵子负责性能优化项目,需要利用RunLoop做性能优化和性能检测,趁着这个机会深入研 ...
- IOS开发之MD5加密和钥匙串的使用-oc
IOS开发之MD5加密和钥匙串的使用-oc 源码在我的主页,md5加密是用户登录安全的一个保障.不可逆的,可以暴力破解的. // // ViewController.m // MD5演练 // // ...
- IOS开发之CALayer基本属性和使用
IOS开发之CALayer基本属性和使用 // // ViewController.m // CALayer // // Created by 鲁军 on 2021/2/21. //#import & ...
- ios开发之plist 的文件的读写以及沙盒容器路径打印
ios开发之plist 的文件的读写以及沙盒容器路径打印 核心代码在这里 // // ViewController.m // 21-plist存储和沙盒路径 // // Created by 鲁军 o ...
- IOS开发之JSON文件的读写
IOS开发之JSON文件的读写 // // ViewController.m // 20-JSON的读写 // // Created by 鲁军 on 2021/2/13. //#import &qu ...
- IOS开发之JSON序列化从客户端发送到服务器端
IOS开发之JSON序列化从客户端发送到服务端的准备工作 共有6种情况 需要序列化 请查看源代码. 服务器端接受我们采用的是java的Tomcat服务器.配合 struts 2 controller框 ...
最新文章
- 李飞飞团队最新论文:基于anchor关键点的类别级物体6D位姿跟踪
- 输入法项目-用delphi生成GBK 中文编码 表(4~5) GBK/4~5: 0xAA40~0xFEA0(部分) 扩充汉字 包括繁体 0xA840~0xA995(部分) 扩充非汉字...
- Akka(9): 分布式运算:Remoting-远程构建式
- 用border画三角形
- Hibernate VS Mybatis 的SQL不灵活通病如何解决?
- 浅谈opencl之整体框架
- RISC 和 CISC 区别
- 安装报错_MySQL8.0安装后,报错ERROR 1045 (28000)
- 方法区jdk1.7,1.8版本的构造变化
- 手工机器人的做法大全用易拉罐_快来吃“智能机器人炒饭”啦!顾客:比人工炒饭还好吃!...
- 顺序表(线性表的顺序存储)---C语言版
- mysql grant tables_使用SKIP-GRANT-TABLES 解决 MYSQL ROOT密码丢失
- 宝塔面板部署python项目
- 计算机模拟仿真技术的功能,浅谈虚拟仿真技术
- photoshop下载教程
- 计算机病毒是指源程序还是特殊小程序,2015年9月计算机一级考试Msoffice上机模拟题(五)...
- 网络间谍:你的共享文件夹网络监视器
- JZOJ100047. 【NOIP2017提高A组模拟7.14】基因变异
- Win10播放视频卡顿怎么解决
- 养老保险不到60岁能领吗
热门文章
- java并发编程电子书免费送???
- EM最大期望算法与jensen不等式
- 微型计算机控制技术赖寿宏版课后答案,微型计算机控制技术答案(赖寿宏)
- python 端口扫描_Python实现的端口扫描功能
- 老王的常用资源下载(全部附CSDN资源链接 12月19日 更新RetopoFlow3至3.00.2)
- linux firefox 解雇ie,Fire IE
- Java位运算符:Java移位运算符、复合位赋值运算符及位逻辑运算符
- RubyOnRails环境搭建
- 1500个前端开发常用JavaScript特效
- 扫雷代码下载地址可以打开啦!