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

来源:互联网 发布:2017淘宝交易额 编辑:程序博客网 时间:2024/05/19 19:57

今天主要介绍一下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




原创粉丝点击