ibireme před 9 roky
rodič
revize
f33e1b10ea
100 změnil soubory, kde provedl 1310 přidání a 0 odebrání
  1. 7 0
      .travis.yml
  2. binární
      Attributes/CoreText and TextKit Attributes.pdf
  3. binární
      Attributes/CoreText and TextKit/Attachment.png
  4. binární
      Attributes/CoreText and TextKit/BackgroundColor.png
  5. binární
      Attributes/CoreText and TextKit/Baseline.png
  6. binární
      Attributes/CoreText and TextKit/Color.png
  7. binární
      Attributes/CoreText and TextKit/Effect.png
  8. binární
      Attributes/CoreText and TextKit/Expansion.png
  9. binární
      Attributes/CoreText and TextKit/Font.png
  10. binární
      Attributes/CoreText and TextKit/Kern.png
  11. binární
      Attributes/CoreText and TextKit/Ligature.png
  12. binární
      Attributes/CoreText and TextKit/Link.png
  13. binární
      Attributes/CoreText and TextKit/Obliqueness.png
  14. binární
      Attributes/CoreText and TextKit/Paragraph/Alignment.png
  15. binární
      Attributes/CoreText and TextKit/Paragraph/BaseWritingDirection.png
  16. binární
      Attributes/CoreText and TextKit/Paragraph/FirstLineHeadIndent.png
  17. binární
      Attributes/CoreText and TextKit/Paragraph/HeadIndent.png
  18. binární
      Attributes/CoreText and TextKit/Paragraph/HyphenationFactor.png
  19. binární
      Attributes/CoreText and TextKit/Paragraph/LineBreakMode.png
  20. binární
      Attributes/CoreText and TextKit/Paragraph/LineHeightMultiple.png
  21. binární
      Attributes/CoreText and TextKit/Paragraph/LineSpacing.png
  22. binární
      Attributes/CoreText and TextKit/Paragraph/MaximumLineHeight.png
  23. binární
      Attributes/CoreText and TextKit/Paragraph/MinimumLineHeight.png
  24. binární
      Attributes/CoreText and TextKit/Paragraph/ParagraphSpacing.png
  25. binární
      Attributes/CoreText and TextKit/Paragraph/Tab.png
  26. binární
      Attributes/CoreText and TextKit/Paragraph/TailIndent.png
  27. binární
      Attributes/CoreText and TextKit/Ruby.png
  28. binární
      Attributes/CoreText and TextKit/RunDelegate.png
  29. binární
      Attributes/CoreText and TextKit/Shadow.png
  30. binární
      Attributes/CoreText and TextKit/Strikethrough.png
  31. binární
      Attributes/CoreText and TextKit/StrikethroughColor.png
  32. binární
      Attributes/CoreText and TextKit/Stroke.png
  33. binární
      Attributes/CoreText and TextKit/StrokeColor.png
  34. binární
      Attributes/CoreText and TextKit/Superscript.png
  35. binární
      Attributes/CoreText and TextKit/Underline.png
  36. binární
      Attributes/CoreText and TextKit/UnderlineColor.png
  37. binární
      Attributes/CoreText and TextKit/VerticalForms.png
  38. binární
      Attributes/CoreText and TextKit/WriteDirection.png
  39. binární
      Attributes/YYText Extended/YYTextAttachment.gif
  40. binární
      Attributes/YYText Extended/YYTextBackedString.png
  41. binární
      Attributes/YYText Extended/YYTextBackgroundBorder.png
  42. binární
      Attributes/YYText Extended/YYTextBinding.gif
  43. binární
      Attributes/YYText Extended/YYTextBlockBorder.png
  44. binární
      Attributes/YYText Extended/YYTextBorder.png
  45. binární
      Attributes/YYText Extended/YYTextHighlight.gif
  46. binární
      Attributes/YYText Extended/YYTextShadow.png
  47. binární
      Attributes/architecture.png
  48. binární
      Demo/DemoSnapshot/text_markdown.gif
  49. binární
      Demo/DemoSnapshot/text_paste.gif
  50. binární
      Demo/DemoSnapshot/text_path.gif
  51. binární
      Demo/DemoSnapshot/text_vertical.gif
  52. 741 0
      Demo/YYTextDemo.xcodeproj/project.pbxproj
  53. 7 0
      Demo/YYTextDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  54. 17 0
      Demo/YYTextDemo/AppDelegate.h
  55. 45 0
      Demo/YYTextDemo/AppDelegate.m
  56. 38 0
      Demo/YYTextDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
  57. 27 0
      Demo/YYTextDemo/Base.lproj/LaunchScreen.storyboard
  58. 27 0
      Demo/YYTextDemo/Base.lproj/Main.storyboard
  59. 88 0
      Demo/YYTextDemo/CALayer+YYAdd.h
  60. 313 0
      Demo/YYTextDemo/CALayer+YYAdd.m
  61. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/001@2x.gif
  62. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/001@2x.png
  63. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/002@2x.gif
  64. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/002@2x.png
  65. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/003@2x.gif
  66. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/003@2x.png
  67. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/004@2x.gif
  68. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/004@2x.png
  69. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/005@2x.gif
  70. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/005@2x.png
  71. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/006@2x.gif
  72. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/006@2x.png
  73. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/007@2x.gif
  74. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/007@2x.png
  75. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/008@2x.gif
  76. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/008@2x.png
  77. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/009@2x.gif
  78. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/009@2x.png
  79. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/010@2x.gif
  80. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/010@2x.png
  81. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/011@2x.gif
  82. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/011@2x.png
  83. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/012@2x.gif
  84. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/012@2x.png
  85. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/013@2x.gif
  86. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/013@2x.png
  87. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/014@2x.gif
  88. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/014@2x.png
  89. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/015@2x.gif
  90. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/015@2x.png
  91. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/016@2x.gif
  92. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/016@2x.png
  93. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/017@2x.gif
  94. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/017@2x.png
  95. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/018@2x.gif
  96. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/018@2x.png
  97. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/019@2x.gif
  98. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/019@2x.png
  99. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/020@2x.gif
  100. binární
      Demo/YYTextDemo/EmoticonQQ.bundle/020@2x.png

+ 7 - 0
.travis.yml

@@ -0,0 +1,7 @@
+language: objective-c
+osx_image: xcode7
+xcode_project: Framework/YYText.xcodeproj
+xcode_scheme: YYText
+
+script:
+- xctool -project Framework/YYText.xcodeproj -scheme YYText build test CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO

binární
Attributes/CoreText and TextKit Attributes.pdf


binární
Attributes/CoreText and TextKit/Attachment.png


binární
Attributes/CoreText and TextKit/BackgroundColor.png


binární
Attributes/CoreText and TextKit/Baseline.png


binární
Attributes/CoreText and TextKit/Color.png


binární
Attributes/CoreText and TextKit/Effect.png


binární
Attributes/CoreText and TextKit/Expansion.png


binární
Attributes/CoreText and TextKit/Font.png


binární
Attributes/CoreText and TextKit/Kern.png


binární
Attributes/CoreText and TextKit/Ligature.png


binární
Attributes/CoreText and TextKit/Link.png


binární
Attributes/CoreText and TextKit/Obliqueness.png


binární
Attributes/CoreText and TextKit/Paragraph/Alignment.png


binární
Attributes/CoreText and TextKit/Paragraph/BaseWritingDirection.png


binární
Attributes/CoreText and TextKit/Paragraph/FirstLineHeadIndent.png


binární
Attributes/CoreText and TextKit/Paragraph/HeadIndent.png


binární
Attributes/CoreText and TextKit/Paragraph/HyphenationFactor.png


binární
Attributes/CoreText and TextKit/Paragraph/LineBreakMode.png


binární
Attributes/CoreText and TextKit/Paragraph/LineHeightMultiple.png


binární
Attributes/CoreText and TextKit/Paragraph/LineSpacing.png


binární
Attributes/CoreText and TextKit/Paragraph/MaximumLineHeight.png


binární
Attributes/CoreText and TextKit/Paragraph/MinimumLineHeight.png


binární
Attributes/CoreText and TextKit/Paragraph/ParagraphSpacing.png


binární
Attributes/CoreText and TextKit/Paragraph/Tab.png


binární
Attributes/CoreText and TextKit/Paragraph/TailIndent.png


binární
Attributes/CoreText and TextKit/Ruby.png


binární
Attributes/CoreText and TextKit/RunDelegate.png


binární
Attributes/CoreText and TextKit/Shadow.png


binární
Attributes/CoreText and TextKit/Strikethrough.png


binární
Attributes/CoreText and TextKit/StrikethroughColor.png


binární
Attributes/CoreText and TextKit/Stroke.png


binární
Attributes/CoreText and TextKit/StrokeColor.png


binární
Attributes/CoreText and TextKit/Superscript.png


binární
Attributes/CoreText and TextKit/Underline.png


binární
Attributes/CoreText and TextKit/UnderlineColor.png


binární
Attributes/CoreText and TextKit/VerticalForms.png


binární
Attributes/CoreText and TextKit/WriteDirection.png


binární
Attributes/YYText Extended/YYTextAttachment.gif


binární
Attributes/YYText Extended/YYTextBackedString.png


binární
Attributes/YYText Extended/YYTextBackgroundBorder.png


binární
Attributes/YYText Extended/YYTextBinding.gif


binární
Attributes/YYText Extended/YYTextBlockBorder.png


binární
Attributes/YYText Extended/YYTextBorder.png


binární
Attributes/YYText Extended/YYTextHighlight.gif


binární
Attributes/YYText Extended/YYTextShadow.png


binární
Attributes/architecture.png


binární
Demo/DemoSnapshot/text_markdown.gif


binární
Demo/DemoSnapshot/text_paste.gif


binární
Demo/DemoSnapshot/text_path.gif


binární
Demo/DemoSnapshot/text_vertical.gif


+ 741 - 0
Demo/YYTextDemo.xcodeproj/project.pbxproj

@@ -0,0 +1,741 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		ABDC31581BE9FB990012A159 /* YYTextContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31261BE9FB990012A159 /* YYTextContainerView.m */; };
+		ABDC31591BE9FB990012A159 /* YYTextDebugOption.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31281BE9FB990012A159 /* YYTextDebugOption.m */; };
+		ABDC315A1BE9FB990012A159 /* YYTextEffectWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC312A1BE9FB990012A159 /* YYTextEffectWindow.m */; };
+		ABDC315B1BE9FB990012A159 /* YYTextInput.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC312C1BE9FB990012A159 /* YYTextInput.m */; };
+		ABDC315C1BE9FB990012A159 /* YYTextKeyboardManager.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC312E1BE9FB990012A159 /* YYTextKeyboardManager.m */; };
+		ABDC315D1BE9FB990012A159 /* YYTextLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31301BE9FB990012A159 /* YYTextLayout.m */; };
+		ABDC315E1BE9FB990012A159 /* YYTextLine.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31321BE9FB990012A159 /* YYTextLine.m */; };
+		ABDC315F1BE9FB990012A159 /* YYTextMagnifier.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31341BE9FB990012A159 /* YYTextMagnifier.m */; };
+		ABDC31601BE9FB990012A159 /* YYTextSelectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31361BE9FB990012A159 /* YYTextSelectionView.m */; };
+		ABDC31611BE9FB990012A159 /* YYTextArchiver.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31391BE9FB990012A159 /* YYTextArchiver.m */; };
+		ABDC31621BE9FB990012A159 /* YYTextAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC313B1BE9FB990012A159 /* YYTextAttribute.m */; };
+		ABDC31631BE9FB990012A159 /* YYTextParser.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC313D1BE9FB990012A159 /* YYTextParser.m */; };
+		ABDC31641BE9FB990012A159 /* YYTextRubyAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC313F1BE9FB990012A159 /* YYTextRubyAnnotation.m */; };
+		ABDC31651BE9FB990012A159 /* YYTextRunDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31411BE9FB990012A159 /* YYTextRunDelegate.m */; };
+		ABDC31661BE9FB990012A159 /* NSAttributedString+YYText.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31441BE9FB990012A159 /* NSAttributedString+YYText.m */; };
+		ABDC31671BE9FB990012A159 /* NSParagraphStyle+YYText.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31461BE9FB990012A159 /* NSParagraphStyle+YYText.m */; };
+		ABDC31681BE9FB990012A159 /* UIPasteboard+YYText.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31481BE9FB990012A159 /* UIPasteboard+YYText.m */; };
+		ABDC31691BE9FB990012A159 /* UIView+YYText.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC314A1BE9FB990012A159 /* UIView+YYText.m */; };
+		ABDC316A1BE9FB990012A159 /* YYTextAsyncLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC314C1BE9FB990012A159 /* YYTextAsyncLayer.m */; };
+		ABDC316B1BE9FB990012A159 /* YYTextTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC314E1BE9FB990012A159 /* YYTextTransaction.m */; };
+		ABDC316C1BE9FB990012A159 /* YYTextUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31501BE9FB990012A159 /* YYTextUtilities.m */; };
+		ABDC316D1BE9FB990012A159 /* YYTextWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31521BE9FB990012A159 /* YYTextWeakProxy.m */; };
+		ABDC316E1BE9FB990012A159 /* YYLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31541BE9FB990012A159 /* YYLabel.m */; };
+		ABDC316F1BE9FB990012A159 /* YYTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31571BE9FB990012A159 /* YYTextView.m */; };
+		ABDC319A1BEA00AC0012A159 /* YYTextExample.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31831BEA00AC0012A159 /* YYTextExample.m */; };
+		ABDC319B1BEA00AC0012A159 /* YYTextAttributeExample.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31851BEA00AC0012A159 /* YYTextAttributeExample.m */; };
+		ABDC319C1BEA00AC0012A159 /* YYTextAttachmentExample.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31871BEA00AC0012A159 /* YYTextAttachmentExample.m */; };
+		ABDC319D1BEA00AC0012A159 /* YYTextEditExample.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31891BEA00AC0012A159 /* YYTextEditExample.m */; };
+		ABDC319E1BEA00AC0012A159 /* YYTextMarkdownExample.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC318B1BEA00AC0012A159 /* YYTextMarkdownExample.m */; };
+		ABDC319F1BEA00AC0012A159 /* YYTextEmoticonExample.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC318D1BEA00AC0012A159 /* YYTextEmoticonExample.m */; };
+		ABDC31A01BEA00AC0012A159 /* YYTextBindingExample.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC318F1BEA00AC0012A159 /* YYTextBindingExample.m */; };
+		ABDC31A11BEA00AC0012A159 /* YYTextCopyPasteExample.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31911BEA00AC0012A159 /* YYTextCopyPasteExample.m */; };
+		ABDC31A21BEA00AC0012A159 /* YYTextUndoRedoExample.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31931BEA00AC0012A159 /* YYTextUndoRedoExample.m */; };
+		ABDC31A31BEA00AC0012A159 /* YYTextRubyExample.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31951BEA00AC0012A159 /* YYTextRubyExample.m */; };
+		ABDC31A41BEA00AC0012A159 /* YYTextAsyncExample.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31971BEA00AC0012A159 /* YYTextAsyncExample.m */; };
+		ABDC31A51BEA00AC0012A159 /* YYTextExampleHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31991BEA00AC0012A159 /* YYTextExampleHelper.m */; };
+		ABDC31AC1BEA01080012A159 /* UIView+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31A71BEA01080012A159 /* UIView+YYAdd.m */; };
+		ABDC31AD1BEA01080012A159 /* UIControl+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31A91BEA01080012A159 /* UIControl+YYAdd.m */; };
+		ABDC31AE1BEA01080012A159 /* UIGestureRecognizer+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31AB1BEA01080012A159 /* UIGestureRecognizer+YYAdd.m */; };
+		ABDC31B11BEA01700012A159 /* UIImage+YYWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31B01BEA01700012A159 /* UIImage+YYWebImage.m */; };
+		ABDC31B41BEA02D50012A159 /* NSBundle+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31B31BEA02D50012A159 /* NSBundle+YYAdd.m */; };
+		ABDC31B71BEA02F90012A159 /* NSString+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31B61BEA02F90012A159 /* NSString+YYAdd.m */; };
+		ABDC31BA1BEA03B20012A159 /* YYGestureRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31B91BEA03B20012A159 /* YYGestureRecognizer.m */; };
+		ABDC31BD1BEA03EF0012A159 /* YYFPSLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31BC1BEA03EF0012A159 /* YYFPSLabel.m */; };
+		ABDC31C01BEA05640012A159 /* CALayer+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31BF1BEA05640012A159 /* CALayer+YYAdd.m */; };
+		ABDC31C31BEA05990012A159 /* NSData+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31C21BEA05990012A159 /* NSData+YYAdd.m */; };
+		ABDC31C51BEA06070012A159 /* EmoticonQQ.bundle in Resources */ = {isa = PBXBuildFile; fileRef = ABDC31C41BEA06070012A159 /* EmoticonQQ.bundle */; };
+		ABDC31C81BEA06DB0012A159 /* YYWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31C71BEA06DB0012A159 /* YYWeakProxy.m */; };
+		ABDC31CA1BEA07160012A159 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = ABDC31C91BEA07160012A159 /* libz.tbd */; };
+		ABDC31CC1BEA071B0012A159 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABDC31CB1BEA071B0012A159 /* ImageIO.framework */; };
+		ABDC31CE1BEA07290012A159 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABDC31CD1BEA07290012A159 /* SystemConfiguration.framework */; };
+		ABDC31D21BEA083F0012A159 /* pia@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = ABDC31D11BEA083F0012A159 /* pia@2x.png */; };
+		ABDC31D41BEA08840012A159 /* dribbble64_imageio.png in Resources */ = {isa = PBXBuildFile; fileRef = ABDC31D31BEA08840012A159 /* dribbble64_imageio.png */; };
+		ABDC31D61BEA09310012A159 /* dribbble256_imageio.png in Resources */ = {isa = PBXBuildFile; fileRef = ABDC31D51BEA09310012A159 /* dribbble256_imageio.png */; };
+		ABDC31E31BEA0C5A0012A159 /* Animated image support.txt in Resources */ = {isa = PBXBuildFile; fileRef = ABDC31D81BEA0C5A0012A159 /* Animated image support.txt */; };
+		ABDC31E41BEA0C5A0012A159 /* YYAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31DA1BEA0C5A0012A159 /* YYAnimatedImageView.m */; };
+		ABDC31E51BEA0C5A0012A159 /* YYFrameImage.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31DC1BEA0C5A0012A159 /* YYFrameImage.m */; };
+		ABDC31E61BEA0C5A0012A159 /* YYImage.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31DE1BEA0C5A0012A159 /* YYImage.m */; };
+		ABDC31E71BEA0C5A0012A159 /* YYImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31E01BEA0C5A0012A159 /* YYImageCoder.m */; };
+		ABDC31E81BEA0C5A0012A159 /* YYSpriteSheetImage.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC31E21BEA0C5A0012A159 /* YYSpriteSheetImage.m */; };
+		ABDC32101BEB35DB0012A159 /* YYTextTagExample.m in Sources */ = {isa = PBXBuildFile; fileRef = ABDC320F1BEB35DB0012A159 /* YYTextTagExample.m */; };
+		D975392B1BD2896100C6F4B8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D975392A1BD2896100C6F4B8 /* main.m */; };
+		D975392E1BD2896100C6F4B8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D975392D1BD2896100C6F4B8 /* AppDelegate.m */; };
+		D97539311BD2896100C6F4B8 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D97539301BD2896100C6F4B8 /* ViewController.m */; };
+		D97539341BD2896100C6F4B8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D97539321BD2896100C6F4B8 /* Main.storyboard */; };
+		D97539361BD2896100C6F4B8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D97539351BD2896100C6F4B8 /* Assets.xcassets */; };
+		D97539391BD2896100C6F4B8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D97539371BD2896100C6F4B8 /* LaunchScreen.storyboard */; };
+		D975394B1BD289B400C6F4B8 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D975394A1BD289B400C6F4B8 /* MobileCoreServices.framework */; };
+		D975394D1BD289B800C6F4B8 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D975394C1BD289B800C6F4B8 /* Accelerate.framework */; };
+		D975394F1BD289BC00C6F4B8 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D975394E1BD289BC00C6F4B8 /* CoreText.framework */; };
+		D97539511BD289C000C6F4B8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D97539501BD289C000C6F4B8 /* QuartzCore.framework */; };
+		D97539531BD289C400C6F4B8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D97539521BD289C400C6F4B8 /* UIKit.framework */; };
+		D97539551BD289C800C6F4B8 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D97539541BD289C800C6F4B8 /* CoreFoundation.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		D97539481BD2899B00C6F4B8 /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 10;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		ABDC31251BE9FB990012A159 /* YYTextContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextContainerView.h; sourceTree = "<group>"; };
+		ABDC31261BE9FB990012A159 /* YYTextContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextContainerView.m; sourceTree = "<group>"; };
+		ABDC31271BE9FB990012A159 /* YYTextDebugOption.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextDebugOption.h; sourceTree = "<group>"; };
+		ABDC31281BE9FB990012A159 /* YYTextDebugOption.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextDebugOption.m; sourceTree = "<group>"; };
+		ABDC31291BE9FB990012A159 /* YYTextEffectWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextEffectWindow.h; sourceTree = "<group>"; };
+		ABDC312A1BE9FB990012A159 /* YYTextEffectWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextEffectWindow.m; sourceTree = "<group>"; };
+		ABDC312B1BE9FB990012A159 /* YYTextInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextInput.h; sourceTree = "<group>"; };
+		ABDC312C1BE9FB990012A159 /* YYTextInput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextInput.m; sourceTree = "<group>"; };
+		ABDC312D1BE9FB990012A159 /* YYTextKeyboardManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextKeyboardManager.h; sourceTree = "<group>"; };
+		ABDC312E1BE9FB990012A159 /* YYTextKeyboardManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextKeyboardManager.m; sourceTree = "<group>"; };
+		ABDC312F1BE9FB990012A159 /* YYTextLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextLayout.h; sourceTree = "<group>"; };
+		ABDC31301BE9FB990012A159 /* YYTextLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextLayout.m; sourceTree = "<group>"; };
+		ABDC31311BE9FB990012A159 /* YYTextLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextLine.h; sourceTree = "<group>"; };
+		ABDC31321BE9FB990012A159 /* YYTextLine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextLine.m; sourceTree = "<group>"; };
+		ABDC31331BE9FB990012A159 /* YYTextMagnifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextMagnifier.h; sourceTree = "<group>"; };
+		ABDC31341BE9FB990012A159 /* YYTextMagnifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextMagnifier.m; sourceTree = "<group>"; };
+		ABDC31351BE9FB990012A159 /* YYTextSelectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextSelectionView.h; sourceTree = "<group>"; };
+		ABDC31361BE9FB990012A159 /* YYTextSelectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextSelectionView.m; sourceTree = "<group>"; };
+		ABDC31381BE9FB990012A159 /* YYTextArchiver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextArchiver.h; sourceTree = "<group>"; };
+		ABDC31391BE9FB990012A159 /* YYTextArchiver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextArchiver.m; sourceTree = "<group>"; };
+		ABDC313A1BE9FB990012A159 /* YYTextAttribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextAttribute.h; sourceTree = "<group>"; };
+		ABDC313B1BE9FB990012A159 /* YYTextAttribute.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextAttribute.m; sourceTree = "<group>"; };
+		ABDC313C1BE9FB990012A159 /* YYTextParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextParser.h; sourceTree = "<group>"; };
+		ABDC313D1BE9FB990012A159 /* YYTextParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextParser.m; sourceTree = "<group>"; };
+		ABDC313E1BE9FB990012A159 /* YYTextRubyAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextRubyAnnotation.h; sourceTree = "<group>"; };
+		ABDC313F1BE9FB990012A159 /* YYTextRubyAnnotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextRubyAnnotation.m; sourceTree = "<group>"; };
+		ABDC31401BE9FB990012A159 /* YYTextRunDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextRunDelegate.h; sourceTree = "<group>"; };
+		ABDC31411BE9FB990012A159 /* YYTextRunDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextRunDelegate.m; sourceTree = "<group>"; };
+		ABDC31431BE9FB990012A159 /* NSAttributedString+YYText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSAttributedString+YYText.h"; sourceTree = "<group>"; };
+		ABDC31441BE9FB990012A159 /* NSAttributedString+YYText.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSAttributedString+YYText.m"; sourceTree = "<group>"; };
+		ABDC31451BE9FB990012A159 /* NSParagraphStyle+YYText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSParagraphStyle+YYText.h"; sourceTree = "<group>"; };
+		ABDC31461BE9FB990012A159 /* NSParagraphStyle+YYText.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSParagraphStyle+YYText.m"; sourceTree = "<group>"; };
+		ABDC31471BE9FB990012A159 /* UIPasteboard+YYText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIPasteboard+YYText.h"; sourceTree = "<group>"; };
+		ABDC31481BE9FB990012A159 /* UIPasteboard+YYText.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIPasteboard+YYText.m"; sourceTree = "<group>"; };
+		ABDC31491BE9FB990012A159 /* UIView+YYText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+YYText.h"; sourceTree = "<group>"; };
+		ABDC314A1BE9FB990012A159 /* UIView+YYText.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+YYText.m"; sourceTree = "<group>"; };
+		ABDC314B1BE9FB990012A159 /* YYTextAsyncLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextAsyncLayer.h; sourceTree = "<group>"; };
+		ABDC314C1BE9FB990012A159 /* YYTextAsyncLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextAsyncLayer.m; sourceTree = "<group>"; };
+		ABDC314D1BE9FB990012A159 /* YYTextTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextTransaction.h; sourceTree = "<group>"; };
+		ABDC314E1BE9FB990012A159 /* YYTextTransaction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextTransaction.m; sourceTree = "<group>"; };
+		ABDC314F1BE9FB990012A159 /* YYTextUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextUtilities.h; sourceTree = "<group>"; };
+		ABDC31501BE9FB990012A159 /* YYTextUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextUtilities.m; sourceTree = "<group>"; };
+		ABDC31511BE9FB990012A159 /* YYTextWeakProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextWeakProxy.h; sourceTree = "<group>"; };
+		ABDC31521BE9FB990012A159 /* YYTextWeakProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextWeakProxy.m; sourceTree = "<group>"; };
+		ABDC31531BE9FB990012A159 /* YYLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYLabel.h; sourceTree = "<group>"; };
+		ABDC31541BE9FB990012A159 /* YYLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYLabel.m; sourceTree = "<group>"; };
+		ABDC31551BE9FB990012A159 /* YYText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYText.h; sourceTree = "<group>"; };
+		ABDC31561BE9FB990012A159 /* YYTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextView.h; sourceTree = "<group>"; };
+		ABDC31571BE9FB990012A159 /* YYTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextView.m; sourceTree = "<group>"; };
+		ABDC31821BEA00AC0012A159 /* YYTextExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextExample.h; sourceTree = "<group>"; };
+		ABDC31831BEA00AC0012A159 /* YYTextExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextExample.m; sourceTree = "<group>"; };
+		ABDC31841BEA00AC0012A159 /* YYTextAttributeExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextAttributeExample.h; sourceTree = "<group>"; };
+		ABDC31851BEA00AC0012A159 /* YYTextAttributeExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextAttributeExample.m; sourceTree = "<group>"; };
+		ABDC31861BEA00AC0012A159 /* YYTextAttachmentExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextAttachmentExample.h; sourceTree = "<group>"; };
+		ABDC31871BEA00AC0012A159 /* YYTextAttachmentExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextAttachmentExample.m; sourceTree = "<group>"; };
+		ABDC31881BEA00AC0012A159 /* YYTextEditExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextEditExample.h; sourceTree = "<group>"; };
+		ABDC31891BEA00AC0012A159 /* YYTextEditExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextEditExample.m; sourceTree = "<group>"; };
+		ABDC318A1BEA00AC0012A159 /* YYTextMarkdownExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextMarkdownExample.h; sourceTree = "<group>"; };
+		ABDC318B1BEA00AC0012A159 /* YYTextMarkdownExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextMarkdownExample.m; sourceTree = "<group>"; };
+		ABDC318C1BEA00AC0012A159 /* YYTextEmoticonExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextEmoticonExample.h; sourceTree = "<group>"; };
+		ABDC318D1BEA00AC0012A159 /* YYTextEmoticonExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextEmoticonExample.m; sourceTree = "<group>"; };
+		ABDC318E1BEA00AC0012A159 /* YYTextBindingExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextBindingExample.h; sourceTree = "<group>"; };
+		ABDC318F1BEA00AC0012A159 /* YYTextBindingExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextBindingExample.m; sourceTree = "<group>"; };
+		ABDC31901BEA00AC0012A159 /* YYTextCopyPasteExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextCopyPasteExample.h; sourceTree = "<group>"; };
+		ABDC31911BEA00AC0012A159 /* YYTextCopyPasteExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextCopyPasteExample.m; sourceTree = "<group>"; };
+		ABDC31921BEA00AC0012A159 /* YYTextUndoRedoExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextUndoRedoExample.h; sourceTree = "<group>"; };
+		ABDC31931BEA00AC0012A159 /* YYTextUndoRedoExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextUndoRedoExample.m; sourceTree = "<group>"; };
+		ABDC31941BEA00AC0012A159 /* YYTextRubyExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextRubyExample.h; sourceTree = "<group>"; };
+		ABDC31951BEA00AC0012A159 /* YYTextRubyExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextRubyExample.m; sourceTree = "<group>"; };
+		ABDC31961BEA00AC0012A159 /* YYTextAsyncExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextAsyncExample.h; sourceTree = "<group>"; };
+		ABDC31971BEA00AC0012A159 /* YYTextAsyncExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextAsyncExample.m; sourceTree = "<group>"; };
+		ABDC31981BEA00AC0012A159 /* YYTextExampleHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextExampleHelper.h; sourceTree = "<group>"; };
+		ABDC31991BEA00AC0012A159 /* YYTextExampleHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextExampleHelper.m; sourceTree = "<group>"; };
+		ABDC31A61BEA01080012A159 /* UIView+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+YYAdd.h"; sourceTree = "<group>"; };
+		ABDC31A71BEA01080012A159 /* UIView+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+YYAdd.m"; sourceTree = "<group>"; };
+		ABDC31A81BEA01080012A159 /* UIControl+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIControl+YYAdd.h"; sourceTree = "<group>"; };
+		ABDC31A91BEA01080012A159 /* UIControl+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIControl+YYAdd.m"; sourceTree = "<group>"; };
+		ABDC31AA1BEA01080012A159 /* UIGestureRecognizer+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIGestureRecognizer+YYAdd.h"; sourceTree = "<group>"; };
+		ABDC31AB1BEA01080012A159 /* UIGestureRecognizer+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIGestureRecognizer+YYAdd.m"; sourceTree = "<group>"; };
+		ABDC31AF1BEA01700012A159 /* UIImage+YYWebImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+YYWebImage.h"; sourceTree = "<group>"; };
+		ABDC31B01BEA01700012A159 /* UIImage+YYWebImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+YYWebImage.m"; sourceTree = "<group>"; };
+		ABDC31B21BEA02D50012A159 /* NSBundle+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSBundle+YYAdd.h"; sourceTree = "<group>"; };
+		ABDC31B31BEA02D50012A159 /* NSBundle+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSBundle+YYAdd.m"; sourceTree = "<group>"; };
+		ABDC31B51BEA02F90012A159 /* NSString+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+YYAdd.h"; sourceTree = "<group>"; };
+		ABDC31B61BEA02F90012A159 /* NSString+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+YYAdd.m"; sourceTree = "<group>"; };
+		ABDC31B81BEA03B20012A159 /* YYGestureRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYGestureRecognizer.h; sourceTree = "<group>"; };
+		ABDC31B91BEA03B20012A159 /* YYGestureRecognizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYGestureRecognizer.m; sourceTree = "<group>"; };
+		ABDC31BB1BEA03EF0012A159 /* YYFPSLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYFPSLabel.h; sourceTree = "<group>"; };
+		ABDC31BC1BEA03EF0012A159 /* YYFPSLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYFPSLabel.m; sourceTree = "<group>"; };
+		ABDC31BE1BEA05640012A159 /* CALayer+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CALayer+YYAdd.h"; sourceTree = "<group>"; };
+		ABDC31BF1BEA05640012A159 /* CALayer+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CALayer+YYAdd.m"; sourceTree = "<group>"; };
+		ABDC31C11BEA05990012A159 /* NSData+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+YYAdd.h"; sourceTree = "<group>"; };
+		ABDC31C21BEA05990012A159 /* NSData+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+YYAdd.m"; sourceTree = "<group>"; };
+		ABDC31C41BEA06070012A159 /* EmoticonQQ.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = EmoticonQQ.bundle; sourceTree = "<group>"; };
+		ABDC31C61BEA06DB0012A159 /* YYWeakProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYWeakProxy.h; sourceTree = "<group>"; };
+		ABDC31C71BEA06DB0012A159 /* YYWeakProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYWeakProxy.m; sourceTree = "<group>"; };
+		ABDC31C91BEA07160012A159 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
+		ABDC31CB1BEA071B0012A159 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; };
+		ABDC31CD1BEA07290012A159 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
+		ABDC31D11BEA083F0012A159 /* pia@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "pia@2x.png"; sourceTree = "<group>"; };
+		ABDC31D31BEA08840012A159 /* dribbble64_imageio.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dribbble64_imageio.png; sourceTree = "<group>"; };
+		ABDC31D51BEA09310012A159 /* dribbble256_imageio.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dribbble256_imageio.png; sourceTree = "<group>"; };
+		ABDC31D81BEA0C5A0012A159 /* Animated image support.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "Animated image support.txt"; sourceTree = "<group>"; };
+		ABDC31D91BEA0C5A0012A159 /* YYAnimatedImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYAnimatedImageView.h; sourceTree = "<group>"; };
+		ABDC31DA1BEA0C5A0012A159 /* YYAnimatedImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYAnimatedImageView.m; sourceTree = "<group>"; };
+		ABDC31DB1BEA0C5A0012A159 /* YYFrameImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYFrameImage.h; sourceTree = "<group>"; };
+		ABDC31DC1BEA0C5A0012A159 /* YYFrameImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYFrameImage.m; sourceTree = "<group>"; };
+		ABDC31DD1BEA0C5A0012A159 /* YYImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImage.h; sourceTree = "<group>"; };
+		ABDC31DE1BEA0C5A0012A159 /* YYImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImage.m; sourceTree = "<group>"; };
+		ABDC31DF1BEA0C5A0012A159 /* YYImageCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageCoder.h; sourceTree = "<group>"; };
+		ABDC31E01BEA0C5A0012A159 /* YYImageCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageCoder.m; sourceTree = "<group>"; };
+		ABDC31E11BEA0C5A0012A159 /* YYSpriteSheetImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYSpriteSheetImage.h; sourceTree = "<group>"; };
+		ABDC31E21BEA0C5A0012A159 /* YYSpriteSheetImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYSpriteSheetImage.m; sourceTree = "<group>"; };
+		ABDC320E1BEB35DB0012A159 /* YYTextTagExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYTextTagExample.h; sourceTree = "<group>"; };
+		ABDC320F1BEB35DB0012A159 /* YYTextTagExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYTextTagExample.m; sourceTree = "<group>"; };
+		D97539261BD2896100C6F4B8 /* YYTextDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = YYTextDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		D975392A1BD2896100C6F4B8 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		D975392C1BD2896100C6F4B8 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+		D975392D1BD2896100C6F4B8 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+		D975392F1BD2896100C6F4B8 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
+		D97539301BD2896100C6F4B8 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
+		D97539331BD2896100C6F4B8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
+		D97539351BD2896100C6F4B8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+		D97539381BD2896100C6F4B8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
+		D975393A1BD2896100C6F4B8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		D975394A1BD289B400C6F4B8 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
+		D975394C1BD289B800C6F4B8 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
+		D975394E1BD289BC00C6F4B8 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
+		D97539501BD289C000C6F4B8 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+		D97539521BD289C400C6F4B8 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+		D97539541BD289C800C6F4B8 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		D97539231BD2896100C6F4B8 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				ABDC31CE1BEA07290012A159 /* SystemConfiguration.framework in Frameworks */,
+				D975394B1BD289B400C6F4B8 /* MobileCoreServices.framework in Frameworks */,
+				ABDC31CC1BEA071B0012A159 /* ImageIO.framework in Frameworks */,
+				ABDC31CA1BEA07160012A159 /* libz.tbd in Frameworks */,
+				D97539551BD289C800C6F4B8 /* CoreFoundation.framework in Frameworks */,
+				D97539531BD289C400C6F4B8 /* UIKit.framework in Frameworks */,
+				D97539511BD289C000C6F4B8 /* QuartzCore.framework in Frameworks */,
+				D975394F1BD289BC00C6F4B8 /* CoreText.framework in Frameworks */,
+				D975394D1BD289B800C6F4B8 /* Accelerate.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		ABDC31231BE9FB990012A159 /* YYText */ = {
+			isa = PBXGroup;
+			children = (
+				ABDC31551BE9FB990012A159 /* YYText.h */,
+				ABDC31531BE9FB990012A159 /* YYLabel.h */,
+				ABDC31541BE9FB990012A159 /* YYLabel.m */,
+				ABDC31561BE9FB990012A159 /* YYTextView.h */,
+				ABDC31571BE9FB990012A159 /* YYTextView.m */,
+				ABDC31371BE9FB990012A159 /* String */,
+				ABDC31241BE9FB990012A159 /* Component */,
+				ABDC31421BE9FB990012A159 /* Utility */,
+			);
+			name = YYText;
+			path = ../YYText;
+			sourceTree = "<group>";
+		};
+		ABDC31241BE9FB990012A159 /* Component */ = {
+			isa = PBXGroup;
+			children = (
+				ABDC312F1BE9FB990012A159 /* YYTextLayout.h */,
+				ABDC31301BE9FB990012A159 /* YYTextLayout.m */,
+				ABDC31311BE9FB990012A159 /* YYTextLine.h */,
+				ABDC31321BE9FB990012A159 /* YYTextLine.m */,
+				ABDC312B1BE9FB990012A159 /* YYTextInput.h */,
+				ABDC312C1BE9FB990012A159 /* YYTextInput.m */,
+				ABDC31271BE9FB990012A159 /* YYTextDebugOption.h */,
+				ABDC31281BE9FB990012A159 /* YYTextDebugOption.m */,
+				ABDC31251BE9FB990012A159 /* YYTextContainerView.h */,
+				ABDC31261BE9FB990012A159 /* YYTextContainerView.m */,
+				ABDC31351BE9FB990012A159 /* YYTextSelectionView.h */,
+				ABDC31361BE9FB990012A159 /* YYTextSelectionView.m */,
+				ABDC31331BE9FB990012A159 /* YYTextMagnifier.h */,
+				ABDC31341BE9FB990012A159 /* YYTextMagnifier.m */,
+				ABDC31291BE9FB990012A159 /* YYTextEffectWindow.h */,
+				ABDC312A1BE9FB990012A159 /* YYTextEffectWindow.m */,
+				ABDC312D1BE9FB990012A159 /* YYTextKeyboardManager.h */,
+				ABDC312E1BE9FB990012A159 /* YYTextKeyboardManager.m */,
+			);
+			path = Component;
+			sourceTree = "<group>";
+		};
+		ABDC31371BE9FB990012A159 /* String */ = {
+			isa = PBXGroup;
+			children = (
+				ABDC313A1BE9FB990012A159 /* YYTextAttribute.h */,
+				ABDC313B1BE9FB990012A159 /* YYTextAttribute.m */,
+				ABDC31381BE9FB990012A159 /* YYTextArchiver.h */,
+				ABDC31391BE9FB990012A159 /* YYTextArchiver.m */,
+				ABDC313C1BE9FB990012A159 /* YYTextParser.h */,
+				ABDC313D1BE9FB990012A159 /* YYTextParser.m */,
+				ABDC31401BE9FB990012A159 /* YYTextRunDelegate.h */,
+				ABDC31411BE9FB990012A159 /* YYTextRunDelegate.m */,
+				ABDC313E1BE9FB990012A159 /* YYTextRubyAnnotation.h */,
+				ABDC313F1BE9FB990012A159 /* YYTextRubyAnnotation.m */,
+			);
+			path = String;
+			sourceTree = "<group>";
+		};
+		ABDC31421BE9FB990012A159 /* Utility */ = {
+			isa = PBXGroup;
+			children = (
+				ABDC314F1BE9FB990012A159 /* YYTextUtilities.h */,
+				ABDC31501BE9FB990012A159 /* YYTextUtilities.m */,
+				ABDC31511BE9FB990012A159 /* YYTextWeakProxy.h */,
+				ABDC31521BE9FB990012A159 /* YYTextWeakProxy.m */,
+				ABDC314D1BE9FB990012A159 /* YYTextTransaction.h */,
+				ABDC314E1BE9FB990012A159 /* YYTextTransaction.m */,
+				ABDC314B1BE9FB990012A159 /* YYTextAsyncLayer.h */,
+				ABDC314C1BE9FB990012A159 /* YYTextAsyncLayer.m */,
+				ABDC31491BE9FB990012A159 /* UIView+YYText.h */,
+				ABDC314A1BE9FB990012A159 /* UIView+YYText.m */,
+				ABDC31431BE9FB990012A159 /* NSAttributedString+YYText.h */,
+				ABDC31441BE9FB990012A159 /* NSAttributedString+YYText.m */,
+				ABDC31451BE9FB990012A159 /* NSParagraphStyle+YYText.h */,
+				ABDC31461BE9FB990012A159 /* NSParagraphStyle+YYText.m */,
+				ABDC31471BE9FB990012A159 /* UIPasteboard+YYText.h */,
+				ABDC31481BE9FB990012A159 /* UIPasteboard+YYText.m */,
+			);
+			path = Utility;
+			sourceTree = "<group>";
+		};
+		ABDC31D71BEA0C5A0012A159 /* YYImage */ = {
+			isa = PBXGroup;
+			children = (
+				ABDC31D81BEA0C5A0012A159 /* Animated image support.txt */,
+				ABDC31D91BEA0C5A0012A159 /* YYAnimatedImageView.h */,
+				ABDC31DA1BEA0C5A0012A159 /* YYAnimatedImageView.m */,
+				ABDC31DB1BEA0C5A0012A159 /* YYFrameImage.h */,
+				ABDC31DC1BEA0C5A0012A159 /* YYFrameImage.m */,
+				ABDC31DD1BEA0C5A0012A159 /* YYImage.h */,
+				ABDC31DE1BEA0C5A0012A159 /* YYImage.m */,
+				ABDC31DF1BEA0C5A0012A159 /* YYImageCoder.h */,
+				ABDC31E01BEA0C5A0012A159 /* YYImageCoder.m */,
+				ABDC31E11BEA0C5A0012A159 /* YYSpriteSheetImage.h */,
+				ABDC31E21BEA0C5A0012A159 /* YYSpriteSheetImage.m */,
+			);
+			name = YYImage;
+			path = YYTextDemo/YYImage;
+			sourceTree = "<group>";
+		};
+		D975391D1BD2896100C6F4B8 = {
+			isa = PBXGroup;
+			children = (
+				ABDC31D71BEA0C5A0012A159 /* YYImage */,
+				ABDC31231BE9FB990012A159 /* YYText */,
+				D97539281BD2896100C6F4B8 /* YYTextDemo */,
+				D97539271BD2896100C6F4B8 /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		D97539271BD2896100C6F4B8 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				D97539261BD2896100C6F4B8 /* YYTextDemo.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		D97539281BD2896100C6F4B8 /* YYTextDemo */ = {
+			isa = PBXGroup;
+			children = (
+				ABDC31821BEA00AC0012A159 /* YYTextExample.h */,
+				ABDC31831BEA00AC0012A159 /* YYTextExample.m */,
+				ABDC31841BEA00AC0012A159 /* YYTextAttributeExample.h */,
+				ABDC31851BEA00AC0012A159 /* YYTextAttributeExample.m */,
+				ABDC320E1BEB35DB0012A159 /* YYTextTagExample.h */,
+				ABDC320F1BEB35DB0012A159 /* YYTextTagExample.m */,
+				ABDC31861BEA00AC0012A159 /* YYTextAttachmentExample.h */,
+				ABDC31871BEA00AC0012A159 /* YYTextAttachmentExample.m */,
+				ABDC31881BEA00AC0012A159 /* YYTextEditExample.h */,
+				ABDC31891BEA00AC0012A159 /* YYTextEditExample.m */,
+				ABDC318A1BEA00AC0012A159 /* YYTextMarkdownExample.h */,
+				ABDC318B1BEA00AC0012A159 /* YYTextMarkdownExample.m */,
+				ABDC318C1BEA00AC0012A159 /* YYTextEmoticonExample.h */,
+				ABDC318D1BEA00AC0012A159 /* YYTextEmoticonExample.m */,
+				ABDC318E1BEA00AC0012A159 /* YYTextBindingExample.h */,
+				ABDC318F1BEA00AC0012A159 /* YYTextBindingExample.m */,
+				ABDC31901BEA00AC0012A159 /* YYTextCopyPasteExample.h */,
+				ABDC31911BEA00AC0012A159 /* YYTextCopyPasteExample.m */,
+				ABDC31921BEA00AC0012A159 /* YYTextUndoRedoExample.h */,
+				ABDC31931BEA00AC0012A159 /* YYTextUndoRedoExample.m */,
+				ABDC31941BEA00AC0012A159 /* YYTextRubyExample.h */,
+				ABDC31951BEA00AC0012A159 /* YYTextRubyExample.m */,
+				ABDC31961BEA00AC0012A159 /* YYTextAsyncExample.h */,
+				ABDC31971BEA00AC0012A159 /* YYTextAsyncExample.m */,
+				ABDC31981BEA00AC0012A159 /* YYTextExampleHelper.h */,
+				ABDC31991BEA00AC0012A159 /* YYTextExampleHelper.m */,
+				ABDC31D51BEA09310012A159 /* dribbble256_imageio.png */,
+				ABDC31D31BEA08840012A159 /* dribbble64_imageio.png */,
+				ABDC31D11BEA083F0012A159 /* pia@2x.png */,
+				ABDC31C41BEA06070012A159 /* EmoticonQQ.bundle */,
+				D97539291BD2896100C6F4B8 /* Supporting Files */,
+				ABDC31C91BEA07160012A159 /* libz.tbd */,
+			);
+			path = YYTextDemo;
+			sourceTree = "<group>";
+		};
+		D97539291BD2896100C6F4B8 /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				D975392C1BD2896100C6F4B8 /* AppDelegate.h */,
+				D975392D1BD2896100C6F4B8 /* AppDelegate.m */,
+				D975392F1BD2896100C6F4B8 /* ViewController.h */,
+				D97539301BD2896100C6F4B8 /* ViewController.m */,
+				ABDC31A61BEA01080012A159 /* UIView+YYAdd.h */,
+				ABDC31A71BEA01080012A159 /* UIView+YYAdd.m */,
+				ABDC31A81BEA01080012A159 /* UIControl+YYAdd.h */,
+				ABDC31A91BEA01080012A159 /* UIControl+YYAdd.m */,
+				ABDC31AA1BEA01080012A159 /* UIGestureRecognizer+YYAdd.h */,
+				ABDC31AB1BEA01080012A159 /* UIGestureRecognizer+YYAdd.m */,
+				ABDC31C11BEA05990012A159 /* NSData+YYAdd.h */,
+				ABDC31C21BEA05990012A159 /* NSData+YYAdd.m */,
+				ABDC31BE1BEA05640012A159 /* CALayer+YYAdd.h */,
+				ABDC31BF1BEA05640012A159 /* CALayer+YYAdd.m */,
+				ABDC31AF1BEA01700012A159 /* UIImage+YYWebImage.h */,
+				ABDC31B01BEA01700012A159 /* UIImage+YYWebImage.m */,
+				ABDC31B51BEA02F90012A159 /* NSString+YYAdd.h */,
+				ABDC31B61BEA02F90012A159 /* NSString+YYAdd.m */,
+				ABDC31B21BEA02D50012A159 /* NSBundle+YYAdd.h */,
+				ABDC31B31BEA02D50012A159 /* NSBundle+YYAdd.m */,
+				ABDC31B81BEA03B20012A159 /* YYGestureRecognizer.h */,
+				ABDC31B91BEA03B20012A159 /* YYGestureRecognizer.m */,
+				ABDC31BB1BEA03EF0012A159 /* YYFPSLabel.h */,
+				ABDC31BC1BEA03EF0012A159 /* YYFPSLabel.m */,
+				ABDC31C61BEA06DB0012A159 /* YYWeakProxy.h */,
+				ABDC31C71BEA06DB0012A159 /* YYWeakProxy.m */,
+				D97539321BD2896100C6F4B8 /* Main.storyboard */,
+				D97539351BD2896100C6F4B8 /* Assets.xcassets */,
+				D97539371BD2896100C6F4B8 /* LaunchScreen.storyboard */,
+				D975393A1BD2896100C6F4B8 /* Info.plist */,
+				D975392A1BD2896100C6F4B8 /* main.m */,
+				ABDC31CD1BEA07290012A159 /* SystemConfiguration.framework */,
+				ABDC31CB1BEA071B0012A159 /* ImageIO.framework */,
+				D97539541BD289C800C6F4B8 /* CoreFoundation.framework */,
+				D97539521BD289C400C6F4B8 /* UIKit.framework */,
+				D97539501BD289C000C6F4B8 /* QuartzCore.framework */,
+				D975394E1BD289BC00C6F4B8 /* CoreText.framework */,
+				D975394C1BD289B800C6F4B8 /* Accelerate.framework */,
+				D975394A1BD289B400C6F4B8 /* MobileCoreServices.framework */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		D97539251BD2896100C6F4B8 /* YYTextDemo */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = D975393D1BD2896100C6F4B8 /* Build configuration list for PBXNativeTarget "YYTextDemo" */;
+			buildPhases = (
+				D97539221BD2896100C6F4B8 /* Sources */,
+				D97539231BD2896100C6F4B8 /* Frameworks */,
+				D97539241BD2896100C6F4B8 /* Resources */,
+				D97539481BD2899B00C6F4B8 /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = YYTextDemo;
+			productName = YYTextDemo;
+			productReference = D97539261BD2896100C6F4B8 /* YYTextDemo.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		D975391E1BD2896100C6F4B8 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0700;
+				ORGANIZATIONNAME = ibireme;
+				TargetAttributes = {
+					D97539251BD2896100C6F4B8 = {
+						CreatedOnToolsVersion = 7.0.1;
+					};
+				};
+			};
+			buildConfigurationList = D97539211BD2896100C6F4B8 /* Build configuration list for PBXProject "YYTextDemo" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+			);
+			mainGroup = D975391D1BD2896100C6F4B8;
+			productRefGroup = D97539271BD2896100C6F4B8 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				D97539251BD2896100C6F4B8 /* YYTextDemo */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		D97539241BD2896100C6F4B8 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				D97539391BD2896100C6F4B8 /* LaunchScreen.storyboard in Resources */,
+				D97539361BD2896100C6F4B8 /* Assets.xcassets in Resources */,
+				ABDC31D21BEA083F0012A159 /* pia@2x.png in Resources */,
+				ABDC31E31BEA0C5A0012A159 /* Animated image support.txt in Resources */,
+				ABDC31D41BEA08840012A159 /* dribbble64_imageio.png in Resources */,
+				ABDC31C51BEA06070012A159 /* EmoticonQQ.bundle in Resources */,
+				D97539341BD2896100C6F4B8 /* Main.storyboard in Resources */,
+				ABDC31D61BEA09310012A159 /* dribbble256_imageio.png in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		D97539221BD2896100C6F4B8 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				ABDC31671BE9FB990012A159 /* NSParagraphStyle+YYText.m in Sources */,
+				ABDC316F1BE9FB990012A159 /* YYTextView.m in Sources */,
+				ABDC31691BE9FB990012A159 /* UIView+YYText.m in Sources */,
+				ABDC319F1BEA00AC0012A159 /* YYTextEmoticonExample.m in Sources */,
+				ABDC316E1BE9FB990012A159 /* YYLabel.m in Sources */,
+				ABDC315D1BE9FB990012A159 /* YYTextLayout.m in Sources */,
+				ABDC31651BE9FB990012A159 /* YYTextRunDelegate.m in Sources */,
+				ABDC316B1BE9FB990012A159 /* YYTextTransaction.m in Sources */,
+				ABDC319C1BEA00AC0012A159 /* YYTextAttachmentExample.m in Sources */,
+				ABDC31621BE9FB990012A159 /* YYTextAttribute.m in Sources */,
+				ABDC31A41BEA00AC0012A159 /* YYTextAsyncExample.m in Sources */,
+				ABDC319E1BEA00AC0012A159 /* YYTextMarkdownExample.m in Sources */,
+				ABDC31611BE9FB990012A159 /* YYTextArchiver.m in Sources */,
+				ABDC31681BE9FB990012A159 /* UIPasteboard+YYText.m in Sources */,
+				ABDC31E61BEA0C5A0012A159 /* YYImage.m in Sources */,
+				ABDC315F1BE9FB990012A159 /* YYTextMagnifier.m in Sources */,
+				ABDC31591BE9FB990012A159 /* YYTextDebugOption.m in Sources */,
+				ABDC31A21BEA00AC0012A159 /* YYTextUndoRedoExample.m in Sources */,
+				ABDC31641BE9FB990012A159 /* YYTextRubyAnnotation.m in Sources */,
+				ABDC31E81BEA0C5A0012A159 /* YYSpriteSheetImage.m in Sources */,
+				ABDC32101BEB35DB0012A159 /* YYTextTagExample.m in Sources */,
+				ABDC315E1BE9FB990012A159 /* YYTextLine.m in Sources */,
+				ABDC31601BE9FB990012A159 /* YYTextSelectionView.m in Sources */,
+				ABDC31B41BEA02D50012A159 /* NSBundle+YYAdd.m in Sources */,
+				ABDC31E41BEA0C5A0012A159 /* YYAnimatedImageView.m in Sources */,
+				ABDC31BD1BEA03EF0012A159 /* YYFPSLabel.m in Sources */,
+				D97539311BD2896100C6F4B8 /* ViewController.m in Sources */,
+				ABDC31C81BEA06DB0012A159 /* YYWeakProxy.m in Sources */,
+				ABDC31C01BEA05640012A159 /* CALayer+YYAdd.m in Sources */,
+				ABDC31661BE9FB990012A159 /* NSAttributedString+YYText.m in Sources */,
+				ABDC31AC1BEA01080012A159 /* UIView+YYAdd.m in Sources */,
+				ABDC31A51BEA00AC0012A159 /* YYTextExampleHelper.m in Sources */,
+				ABDC31E51BEA0C5A0012A159 /* YYFrameImage.m in Sources */,
+				ABDC316C1BE9FB990012A159 /* YYTextUtilities.m in Sources */,
+				ABDC31581BE9FB990012A159 /* YYTextContainerView.m in Sources */,
+				ABDC31E71BEA0C5A0012A159 /* YYImageCoder.m in Sources */,
+				ABDC316A1BE9FB990012A159 /* YYTextAsyncLayer.m in Sources */,
+				ABDC319D1BEA00AC0012A159 /* YYTextEditExample.m in Sources */,
+				D975392E1BD2896100C6F4B8 /* AppDelegate.m in Sources */,
+				ABDC31AD1BEA01080012A159 /* UIControl+YYAdd.m in Sources */,
+				ABDC316D1BE9FB990012A159 /* YYTextWeakProxy.m in Sources */,
+				ABDC31AE1BEA01080012A159 /* UIGestureRecognizer+YYAdd.m in Sources */,
+				ABDC31631BE9FB990012A159 /* YYTextParser.m in Sources */,
+				ABDC31C31BEA05990012A159 /* NSData+YYAdd.m in Sources */,
+				ABDC31A01BEA00AC0012A159 /* YYTextBindingExample.m in Sources */,
+				ABDC319B1BEA00AC0012A159 /* YYTextAttributeExample.m in Sources */,
+				D975392B1BD2896100C6F4B8 /* main.m in Sources */,
+				ABDC315C1BE9FB990012A159 /* YYTextKeyboardManager.m in Sources */,
+				ABDC315A1BE9FB990012A159 /* YYTextEffectWindow.m in Sources */,
+				ABDC315B1BE9FB990012A159 /* YYTextInput.m in Sources */,
+				ABDC31A31BEA00AC0012A159 /* YYTextRubyExample.m in Sources */,
+				ABDC319A1BEA00AC0012A159 /* YYTextExample.m in Sources */,
+				ABDC31BA1BEA03B20012A159 /* YYGestureRecognizer.m in Sources */,
+				ABDC31A11BEA00AC0012A159 /* YYTextCopyPasteExample.m in Sources */,
+				ABDC31B11BEA01700012A159 /* UIImage+YYWebImage.m in Sources */,
+				ABDC31B71BEA02F90012A159 /* NSString+YYAdd.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		D97539321BD2896100C6F4B8 /* Main.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				D97539331BD2896100C6F4B8 /* Base */,
+			);
+			name = Main.storyboard;
+			sourceTree = "<group>";
+		};
+		D97539371BD2896100C6F4B8 /* LaunchScreen.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				D97539381BD2896100C6F4B8 /* Base */,
+			);
+			name = LaunchScreen.storyboard;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		D975393B1BD2896100C6F4B8 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+			};
+			name = Debug;
+		};
+		D975393C1BD2896100C6F4B8 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				SDKROOT = iphoneos;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		D975393E1BD2896100C6F4B8 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				COMPRESS_PNG_FILES = NO;
+				INFOPLIST_FILE = YYTextDemo/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				PRODUCT_BUNDLE_IDENTIFIER = com.ibireme.YYTextDemo;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		D975393F1BD2896100C6F4B8 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				COMPRESS_PNG_FILES = NO;
+				INFOPLIST_FILE = YYTextDemo/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				PRODUCT_BUNDLE_IDENTIFIER = com.ibireme.YYTextDemo;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		D97539211BD2896100C6F4B8 /* Build configuration list for PBXProject "YYTextDemo" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				D975393B1BD2896100C6F4B8 /* Debug */,
+				D975393C1BD2896100C6F4B8 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		D975393D1BD2896100C6F4B8 /* Build configuration list for PBXNativeTarget "YYTextDemo" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				D975393E1BD2896100C6F4B8 /* Debug */,
+				D975393F1BD2896100C6F4B8 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = D975391E1BD2896100C6F4B8 /* Project object */;
+}

+ 7 - 0
Demo/YYTextDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "self:YYTextDemo.xcodeproj">
+   </FileRef>
+</Workspace>

+ 17 - 0
Demo/YYTextDemo/AppDelegate.h

@@ -0,0 +1,17 @@
+//
+//  AppDelegate.h
+//  YYTextDemo
+//
+//  Created by ibireme on 15/10/17.
+//  Copyright © 2015年 ibireme. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+
+@end
+

+ 45 - 0
Demo/YYTextDemo/AppDelegate.m

@@ -0,0 +1,45 @@
+//
+//  AppDelegate.m
+//  YYTextDemo
+//
+//  Created by ibireme on 15/10/17.
+//  Copyright © 2015年 ibireme. All rights reserved.
+//
+
+#import "AppDelegate.h"
+
+@interface AppDelegate ()
+
+@end
+
+@implementation AppDelegate
+
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+    // Override point for customization after application launch.
+    return YES;
+}
+
+- (void)applicationWillResignActive:(UIApplication *)application {
+    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+}
+
+- (void)applicationDidEnterBackground:(UIApplication *)application {
+    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+}
+
+- (void)applicationWillEnterForeground:(UIApplication *)application {
+    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+}
+
+- (void)applicationDidBecomeActive:(UIApplication *)application {
+    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+}
+
+- (void)applicationWillTerminate:(UIApplication *)application {
+    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+}
+
+@end

+ 38 - 0
Demo/YYTextDemo/Assets.xcassets/AppIcon.appiconset/Contents.json

@@ -0,0 +1,38 @@
+{
+  "images" : [
+    {
+      "idiom" : "iphone",
+      "size" : "29x29",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "29x29",
+      "scale" : "3x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "40x40",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "40x40",
+      "scale" : "3x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "60x60",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "60x60",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 27 - 0
Demo/YYTextDemo/Base.lproj/LaunchScreen.storyboard

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8150" systemVersion="15A204g" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8122"/>
+    </dependencies>
+    <scenes>
+        <!--View Controller-->
+        <scene sceneID="EHf-IW-A2E">
+            <objects>
+                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
+                        <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <animations/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="53" y="375"/>
+        </scene>
+    </scenes>
+</document>

+ 27 - 0
Demo/YYTextDemo/Base.lproj/Main.storyboard

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
+    </dependencies>
+    <scenes>
+        <!--View Controller-->
+        <scene sceneID="tne-QT-ifu">
+            <objects>
+                <viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
+                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <animations/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
+            </objects>
+        </scene>
+    </scenes>
+</document>

+ 88 - 0
Demo/YYTextDemo/CALayer+YYAdd.h

@@ -0,0 +1,88 @@
+//
+//  CALayer+YYAdd.h
+//  YYKit <https://github.com/ibireme/YYKit>
+//
+//  Created by ibireme on 14/5/10.
+//  Copyright (c) 2015 ibireme.
+//
+//  This source code is licensed under the MIT-style license found in the
+//  LICENSE file in the root directory of this source tree.
+//
+
+#import <UIKit/UIKit.h>
+#import <QuartzCore/QuartzCore.h>
+
+/**
+ Provides extensions for `CALayer`.
+ */
+@interface CALayer (YYAdd)
+
+/**
+ Take snapshot without transform, image's size equals to bounds.
+ */
+- (UIImage *)snapshotImage;
+
+/**
+ Take snapshot without transform, PDF's page size equals to bounds.
+ */
+- (NSData *)snapshotPDF;
+
+/**
+ Shortcut to set the layer's shadow
+ 
+ @param color  Shadow Color
+ @param offset Shadow offset
+ @param radius Shadow radius
+ */
+- (void)setLayerShadow:(UIColor*)color offset:(CGSize)offset radius:(CGFloat)radius;
+
+/**
+ Remove all sublayers.
+ */
+- (void)removeAllSublayers;
+
+@property (nonatomic) CGFloat left;        ///< Shortcut for frame.origin.x.
+@property (nonatomic) CGFloat top;         ///< Shortcut for frame.origin.y
+@property (nonatomic) CGFloat right;       ///< Shortcut for frame.origin.x + frame.size.width
+@property (nonatomic) CGFloat bottom;      ///< Shortcut for frame.origin.y + frame.size.height
+@property (nonatomic) CGFloat width;       ///< Shortcut for frame.size.width.
+@property (nonatomic) CGFloat height;      ///< Shortcut for frame.size.height.
+@property (nonatomic) CGPoint center;      ///< Shortcut for center.
+@property (nonatomic) CGFloat centerX;     ///< Shortcut for center.x
+@property (nonatomic) CGFloat centerY;     ///< Shortcut for center.y
+@property (nonatomic) CGPoint origin;      ///< Shortcut for frame.origin.
+@property (nonatomic, getter=frameSize, setter=setFrameSize:) CGSize  size; ///< Shortcut for frame.size.
+
+
+@property (nonatomic) CGFloat transformRotation;     ///< key path "tranform.rotation"
+@property (nonatomic) CGFloat transformRotationX;    ///< key path "tranform.rotation.x"
+@property (nonatomic) CGFloat transformRotationY;    ///< key path "tranform.rotation.y"
+@property (nonatomic) CGFloat transformRotationZ;    ///< key path "tranform.rotation.z"
+@property (nonatomic) CGFloat transformScale;        ///< key path "tranform.scale"
+@property (nonatomic) CGFloat transformScaleX;       ///< key path "tranform.scale.x"
+@property (nonatomic) CGFloat transformScaleY;       ///< key path "tranform.scale.y"
+@property (nonatomic) CGFloat transformScaleZ;       ///< key path "tranform.scale.z"
+@property (nonatomic) CGFloat transformTranslationX; ///< key path "tranform.translation.x"
+@property (nonatomic) CGFloat transformTranslationY; ///< key path "tranform.translation.y"
+@property (nonatomic) CGFloat transformTranslationZ; ///< key path "tranform.translation.z"
+
+/**
+ Shortcut for transform.m34, -1/1000 is a good value.
+ It should be set before other transform shortcut.
+ */
+@property (nonatomic, assign) CGFloat transformDepth;
+
+/**
+ Add a fade animation to layer's contents when the contents is changed.
+ 
+ @param duration Animation duration
+ @param curve    Animation curve.
+ */
+- (void)addFadeAnimationWithDuration:(NSTimeInterval)duration curve:(UIViewAnimationCurve)curve;
+
+/**
+ Cancel fade animation which is added with "-addFadeAnimationWithDuration:curve:".
+ */
+- (void)removePreviousFadeAnimation;
+
+@end

+ 313 - 0
Demo/YYTextDemo/CALayer+YYAdd.m

@@ -0,0 +1,313 @@
+//
+//  CALayer+YYAdd.m
+//  YYKit <https://github.com/ibireme/YYKit>
+//
+//  Created by ibireme on 14/5/10.
+//  Copyright (c) 2015 ibireme.
+//
+//  This source code is licensed under the MIT-style license found in the
+//  LICENSE file in the root directory of this source tree.
+//
+
+#import "CALayer+YYAdd.h"
+
+
+
+@implementation CALayer (YYAdd)
+
+- (UIImage *)snapshotImage {
+    UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, 0);
+    CGContextRef context = UIGraphicsGetCurrentContext();
+    [self renderInContext:context];
+    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
+    UIGraphicsEndImageContext();
+    return image;
+}
+
+- (NSData *)snapshotPDF {
+    CGRect bounds = self.bounds;
+    NSMutableData* data = [NSMutableData data];
+    CGDataConsumerRef consumer = CGDataConsumerCreateWithCFData((__bridge CFMutableDataRef)data);
+    CGContextRef context = CGPDFContextCreate(consumer, &bounds, NULL);
+    CGDataConsumerRelease(consumer);
+    if (!context) return nil;
+    CGPDFContextBeginPage(context, NULL);
+    CGContextTranslateCTM(context, 0, bounds.size.height);
+    CGContextScaleCTM(context, 1.0, -1.0);
+    [self renderInContext:context];
+    CGPDFContextEndPage(context);
+    CGPDFContextClose(context);
+    CGContextRelease(context);
+    return data;
+}
+
+- (void)setLayerShadow:(UIColor*)color offset:(CGSize)offset radius:(CGFloat)radius {
+    self.shadowColor = color.CGColor;
+    self.shadowOffset = offset;
+    self.shadowRadius = radius;
+    self.shadowOpacity = 1;
+    self.shouldRasterize = YES;
+    self.rasterizationScale = [UIScreen mainScreen].scale;
+}
+
+- (void)removeAllSublayers {
+    while (self.sublayers.count) {
+        [self.sublayers.lastObject removeFromSuperlayer];
+    }
+}
+
+- (CGFloat)left {
+    return self.frame.origin.x;
+}
+
+- (void)setLeft:(CGFloat)x {
+    CGRect frame = self.frame;
+    frame.origin.x = x;
+    self.frame = frame;
+}
+
+- (CGFloat)top {
+    return self.frame.origin.y;
+}
+
+- (void)setTop:(CGFloat)y {
+    CGRect frame = self.frame;
+    frame.origin.y = y;
+    self.frame = frame;
+}
+
+- (CGFloat)right {
+    return self.frame.origin.x + self.frame.size.width;
+}
+
+- (void)setRight:(CGFloat)right {
+    CGRect frame = self.frame;
+    frame.origin.x = right - frame.size.width;
+    self.frame = frame;
+}
+
+- (CGFloat)bottom {
+    return self.frame.origin.y + self.frame.size.height;
+}
+
+- (void)setBottom:(CGFloat)bottom {
+    CGRect frame = self.frame;
+    frame.origin.y = bottom - frame.size.height;
+    self.frame = frame;
+}
+
+- (CGFloat)width {
+    return self.frame.size.width;
+}
+
+- (void)setWidth:(CGFloat)width {
+    CGRect frame = self.frame;
+    frame.size.width = width;
+    self.frame = frame;
+}
+
+- (CGFloat)height {
+    return self.frame.size.height;
+}
+
+- (void)setHeight:(CGFloat)height {
+    CGRect frame = self.frame;
+    frame.size.height = height;
+    self.frame = frame;
+}
+
+- (CGPoint)center {
+    return CGPointMake(self.frame.origin.x + self.frame.size.width * 0.5,
+                       self.frame.origin.y + self.frame.size.height * 0.5);
+}
+
+- (void)setCenter:(CGPoint)center {
+    CGRect frame = self.frame;
+    frame.origin.x = center.x - frame.size.width * 0.5;
+    frame.origin.y = center.y - frame.size.height * 0.5;
+    self.frame = frame;
+}
+
+- (CGFloat)centerX {
+    return self.frame.origin.x + self.frame.size.width * 0.5;
+}
+
+- (void)setCenterX:(CGFloat)centerX {
+    CGRect frame = self.frame;
+    frame.origin.x = centerX - frame.size.width * 0.5;
+    self.frame = frame;
+}
+
+- (CGFloat)centerY {
+    return self.frame.origin.y + self.frame.size.height * 0.5;
+}
+
+- (void)setCenterY:(CGFloat)centerY {
+    CGRect frame = self.frame;
+    frame.origin.y = centerY - frame.size.height * 0.5;
+    self.frame = frame;
+}
+
+- (CGPoint)origin {
+    return self.frame.origin;
+}
+
+- (void)setOrigin:(CGPoint)origin {
+    CGRect frame = self.frame;
+    frame.origin = origin;
+    self.frame = frame;
+}
+
+- (CGSize)frameSize {
+    return self.frame.size;
+}
+
+- (void)setFrameSize:(CGSize)size {
+    CGRect frame = self.frame;
+    frame.size = size;
+    self.frame = frame;
+}
+
+- (CGFloat)transformRotation {
+    NSNumber *v = [self valueForKeyPath:@"transform.rotation"];
+    return v.doubleValue;
+}
+
+- (void)setTransformRotation:(CGFloat)v {
+    [self setValue:@(v) forKeyPath:@"transform.rotation"];
+}
+
+- (CGFloat)transformRotationX {
+    NSNumber *v = [self valueForKeyPath:@"transform.rotation.x"];
+    return v.doubleValue;
+}
+
+- (void)setTransformRotationX:(CGFloat)v {
+    [self setValue:@(v) forKeyPath:@"transform.rotation.x"];
+}
+
+- (CGFloat)transformRotationY {
+    NSNumber *v = [self valueForKeyPath:@"transform.rotation.y"];
+    return v.doubleValue;
+}
+
+- (void)setTransformRotationY:(CGFloat)v {
+    [self setValue:@(v) forKeyPath:@"transform.rotation.y"];
+}
+
+- (CGFloat)transformRotationZ {
+    NSNumber *v = [self valueForKeyPath:@"transform.rotation.z"];
+    return v.doubleValue;
+}
+
+- (void)setTransformRotationZ:(CGFloat)v {
+    [self setValue:@(v) forKeyPath:@"transform.rotation.z"];
+}
+
+- (CGFloat)transformScaleX {
+    NSNumber *v = [self valueForKeyPath:@"transform.scale.x"];
+    return v.doubleValue;
+}
+
+- (void)setTransformScaleX:(CGFloat)v {
+    [self setValue:@(v) forKeyPath:@"transform.scale.x"];
+}
+
+- (CGFloat)transformScaleY {
+    NSNumber *v = [self valueForKeyPath:@"transform.scale.y"];
+    return v.doubleValue;
+}
+
+- (void)setTransformScaleY:(CGFloat)v {
+    [self setValue:@(v) forKeyPath:@"transform.scale.y"];
+}
+
+- (CGFloat)transformScaleZ {
+    NSNumber *v = [self valueForKeyPath:@"transform.scale.z"];
+    return v.doubleValue;
+}
+
+- (void)setTransformScaleZ:(CGFloat)v {
+    [self setValue:@(v) forKeyPath:@"transform.scale.z"];
+}
+
+- (CGFloat)transformScale {
+    NSNumber *v = [self valueForKeyPath:@"transform.scale"];
+    return v.doubleValue;
+}
+
+- (void)setTransformScale:(CGFloat)v {
+    [self setValue:@(v) forKeyPath:@"transform.scale"];
+}
+
+- (CGFloat)transformTranslationX {
+    NSNumber *v = [self valueForKeyPath:@"transform.translation.x"];
+    return v.doubleValue;
+}
+
+- (void)setTransformTranslationX:(CGFloat)v {
+    [self setValue:@(v) forKeyPath:@"transform.translation.x"];
+}
+
+- (CGFloat)transformTranslationY {
+    NSNumber *v = [self valueForKeyPath:@"transform.translation.y"];
+    return v.doubleValue;
+}
+
+- (void)setTransformTranslationY:(CGFloat)v {
+    [self setValue:@(v) forKeyPath:@"transform.translation.y"];
+}
+
+- (CGFloat)transformTranslationZ {
+    NSNumber *v = [self valueForKeyPath:@"transform.translation.z"];
+    return v.doubleValue;
+}
+
+- (void)setTransformTranslationZ:(CGFloat)v {
+    [self setValue:@(v) forKeyPath:@"transform.translation.z"];
+}
+
+- (CGFloat)transformDepth {
+    return self.transform.m34;
+}
+
+- (void)setTransformDepth:(CGFloat)v {
+    CATransform3D d = self.transform;
+    d.m34 = v;
+    self.transform = d;
+}
+
+- (void)addFadeAnimationWithDuration:(NSTimeInterval)duration curve:(UIViewAnimationCurve)curve {
+    if (duration <= 0) return;
+    
+    NSString *mediaFunction;
+    switch (curve) {
+        case UIViewAnimationCurveEaseInOut: {
+            mediaFunction = kCAMediaTimingFunctionEaseOut;
+        } break;
+        case UIViewAnimationCurveEaseIn: {
+            mediaFunction = kCAMediaTimingFunctionEaseIn;
+        } break;
+        case UIViewAnimationCurveEaseOut: {
+            mediaFunction = kCAMediaTimingFunctionEaseInEaseOut;
+        } break;
+        case UIViewAnimationCurveLinear: {
+            mediaFunction = kCAMediaTimingFunctionLinear;
+        } break;
+        default: {
+            mediaFunction = kCAMediaTimingFunctionLinear;
+        } break;
+    }
+    
+    CATransition *transition = [CATransition animation];
+    transition.duration = duration;
+    transition.timingFunction = [CAMediaTimingFunction functionWithName:mediaFunction];
+    transition.type = kCATransitionFade;
+    [self addAnimation:transition forKey:@"yykit.fade"];
+}
+
+- (void)removePreviousFadeAnimation {
+    [self removeAnimationForKey:@"yykit.fade"];
+}
+
+@end

binární
Demo/YYTextDemo/EmoticonQQ.bundle/001@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/001@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/002@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/002@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/003@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/003@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/004@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/004@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/005@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/005@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/006@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/006@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/007@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/007@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/008@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/008@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/009@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/009@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/010@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/010@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/011@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/011@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/012@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/012@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/013@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/013@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/014@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/014@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/015@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/015@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/016@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/016@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/017@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/017@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/018@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/018@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/019@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/019@2x.png


binární
Demo/YYTextDemo/EmoticonQQ.bundle/020@2x.gif


binární
Demo/YYTextDemo/EmoticonQQ.bundle/020@2x.png


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů