LEOTextView
🐬A high-performance rich editor develop with swift on iOS platform, based on TextKit.
LEOTextView is a **very high-performance** rich editor. Because it's a **subclass of UITextView**, not UIWebView. All of code by **TextKit** framework. The project is written primarily in Swift, distributed under the MIT License license, first published in 2016. Key topics include: rich-text-editor, swift-3, textkit, textview.
LEOTextView
LEOTextView is a very high-performance rich editor. Because it's a subclass of UITextView, not UIWebView. All of code by TextKit framework.
Features
- Bold Text
- Italic Text
- Unordered List
- Ordered List
- List auto indentation
- Undo and Redo
- Rich Text Copy & Paste
Requirements
Xcode 8.3 or newer
| Tag | Swift |
|---|---|
| <= 0.4.x | 2.2 |
| >= 0.5.0 | 3.0 |
| >= 0.7.0 | 4.0 |
Usage
Not extends any class, not EditorController and so on...
You can embed LEOTextView to anywhere that you want.
swift// Init TextView let textView = LEOTextView(frame: self.view.bounds, textContainer: NSTextContainer()) // If you want to use built-in toolbar, call it. textView.enableToolbar() // add to View self.view.addSubview(textView)
Done.
UITextViewDelegate
Some feature I use delegate method, so LEOTextView is delegate self. And provide another delegate property named leo_delegate
swiftpublic var leo_delegate: UITextViewDelegate?
Public methods
Type transform
swiftpublic func changeCurrentParagraphTextWithInputFontMode(mode: LEOInputFontMode) public func changeSelectedTextWithInputFontMode(mode: LEOInputFontMode) public func changeCurrentParagraphToOrderedList(orderedList isOrderedList: Bool, listPrefix: String)
Text attributes persistent
Get JSON by
swiftpublic func textAttributesJSON() -> String
This method return a JSON string that contains all attributes needs to reload.
A unordered list
- A
- B
- C
convert to JSON look like:
json{ "text": "- A\n- B\n- C", "attributes": [ { "location": 0, "length": 11, "fontType": "normal", "name": "NSFont" }, { "location": 0, "length": 11, "listType": 3, "name": "NSParagraphStyle" } ] }
Set JSON and display to UITextView by
swiftpublic func setAttributeTextWithJSONString(jsonString: String)
Or just set attributes only by
swiftpublic func setAttributesWithJSONString(jsonString: String)
Example
To run the example project, clone the repo, and run pod install from the Example directory first.
Installation
Cocoapods
LEOTextView is available through CocoaPods. To install it, simply add the following line to your Podfile:
rubypod "LEOTextView"
Author
Tuesleep, tuesleep@gmail.com
License
LEOTextView is available under the MIT license. See the LICENSE file for more info.
Contributors
Showing top 2 contributors by commit count.
