GitPedia

LEOTextView

🐬A high-performance rich editor develop with swift on iOS platform, based on TextKit.

From tuesleep·Updated February 12, 2026·View on GitHub·

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

CI Status
Version
License
Platform

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

TagSwift
<= 0.4.x2.2
>= 0.5.03.0
>= 0.7.04.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

swift
public var leo_delegate: UITextViewDelegate?

Public methods

Type transform

swift
public func changeCurrentParagraphTextWithInputFontMode(mode: LEOInputFontMode) public func changeSelectedTextWithInputFontMode(mode: LEOInputFontMode) public func changeCurrentParagraphToOrderedList(orderedList isOrderedList: Bool, listPrefix: String)

Text attributes persistent

Get JSON by

swift
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:

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

swift
public func setAttributeTextWithJSONString(jsonString: String)

Or just set attributes only by

swift
public 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:

ruby
pod "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.

View all contributors on GitHub →

This article is auto-generated from tuesleep/LEOTextView via the GitHub API.Last fetched: 6/24/2026