LEOTextView is a very high-performance rich editor. Because it's a subclass of UITextView, not UIWebView. All of code by TextKit framework.
- Bold Text
- Italic Text
- Unordered List
- Ordered List
- List auto indentation
- Undo and Redo
- Rich Text Copy & Paste
Xcode 8.3 or newer
Tag | Swift |
---|---|
<= 0.4.x | 2.2 |
>= 0.5.0 | 3.0 |
>= 0.7.0 | 4.0 |
Not extends any class, not EditorController and so on...
You can embed LEOTextView to anywhere that you want.
// 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.
Some feature I use delegate method, so LEOTextView is delegate self. And provide another delegate property named leo_delegate
public var leo_delegate: UITextViewDelegate?
public func changeCurrentParagraphTextWithInputFontMode(mode: LEOInputFontMode)
public func changeSelectedTextWithInputFontMode(mode: LEOInputFontMode)
public func changeCurrentParagraphToOrderedList(orderedList isOrderedList: Bool, listPrefix: String)
Get JSON by
public 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:
{
"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
public func setAttributeTextWithJSONString(jsonString: String)
Or just set attributes only by
public func setAttributesWithJSONString(jsonString: String)
To run the example project, clone the repo, and run pod install
from the Example directory first.
LEOTextView is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "LEOTextView"
Tuesleep, [email protected]
LEOTextView is available under the MIT license. See the LICENSE file for more info.