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

  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 架构对比:

iOS开发之YYKit丰富的组件,如:YYText

YYText 原生支持的属性

Demo Attribute Name Class
iOS开发之YYKit丰富的组件,如:YYText TextAttachment YYTextAttachment
iOS开发之YYKit丰富的组件,如:YYText TextHighlight YYTextHighlight
iOS开发之YYKit丰富的组件,如:YYText TextBinding YYTextBinding
iOS开发之YYKit丰富的组件,如:YYText TextShadow
TextInnerShadow
YYTextShadow
iOS开发之YYKit丰富的组件,如:YYText TextBorder YYTextBorder
iOS开发之YYKit丰富的组件,如:YYText TextBackgroundBorder YYTextBorder
iOS开发之YYKit丰富的组件,如:YYText TextBlockBorder YYTextBorder
iOS开发之YYKit丰富的组件,如:YYText TextGlyphTransform NSValue(CGAffineTransform)
iOS开发之YYKit丰富的组件,如:YYText TextUnderline YYTextDecoration
iOS开发之YYKit丰富的组件,如:YYText TextStrickthrough YYTextDecoration
iOS开发之YYKit丰富的组件,如:YYText TextBackedString YYTextBackedString

YYText 支持的 CoreText 属性

Demo Attribute Name Class
iOS开发之YYKit丰富的组件,如:YYText Font UIFont(CTFontRef)
iOS开发之YYKit丰富的组件,如:YYText Kern NSNumber
iOS开发之YYKit丰富的组件,如:YYText StrokeWidth NSNumber
iOS开发之YYKit丰富的组件,如:YYText StrokeColor CGColorRef
iOS开发之YYKit丰富的组件,如:YYText Shadow NSShadow
iOS开发之YYKit丰富的组件,如:YYText Ligature NSNumber
iOS开发之YYKit丰富的组件,如:YYText VerticalGlyphForm NSNumber(BOOL)
iOS开发之YYKit丰富的组件,如:YYText WritingDirection NSArray(NSNumber)
iOS开发之YYKit丰富的组件,如:YYText RunDelegate CTRunDelegateRef
iOS开发之YYKit丰富的组件,如:YYText TextAlignment NSParagraphStyle
(NSTextAlignment)
iOS开发之YYKit丰富的组件,如:YYText LineBreakMode NSParagraphStyle
(NSLineBreakMode)
iOS开发之YYKit丰富的组件,如:YYText LineSpacing NSParagraphStyle
(CGFloat)
iOS开发之YYKit丰富的组件,如:YYText ParagraphSpacing
ParagraphSpacingBefore
NSParagraphStyle
(CGFloat)
iOS开发之YYKit丰富的组件,如:YYText FirstLineHeadIndent NSParagraphStyle
(CGFloat)
iOS开发之YYKit丰富的组件,如:YYText HeadIndent NSParagraphStyle
(CGFloat)
iOS开发之YYKit丰富的组件,如:YYText TailIndent NSParagraphStyle
(CGFloat)
iOS开发之YYKit丰富的组件,如:YYText MinimumLineHeight NSParagraphStyle
(CGFloat)
iOS开发之YYKit丰富的组件,如:YYText MaximumLineHeight NSParagraphStyle
(CGFloat)
iOS开发之YYKit丰富的组件,如:YYText LineHeightMultiple NSParagraphStyle
(CGFloat)
iOS开发之YYKit丰富的组件,如:YYText BaseWritingDirection NSParagraphStyle
(NSWritingDirection)
iOS开发之YYKit丰富的组件,如:YYText DefaultTabInterval
TabStops
NSParagraphStyle
CGFloat/NSArray(NSTextTab)

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

iOS开发之YYKit丰富的组件,如:YYText

参考文章:

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.****.net/detail/hbblzjy/9888702