Skip to content

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

License

Notifications You must be signed in to change notification settings

tuesleep/LEOTextView

Repository files navigation

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

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.

// 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

public var leo_delegate: UITextViewDelegate?

Public methods

Type transform

public func changeCurrentParagraphTextWithInputFontMode(mode: LEOInputFontMode)
public func changeSelectedTextWithInputFontMode(mode: LEOInputFontMode)

public func changeCurrentParagraphToOrderedList(orderedList isOrderedList: Bool, listPrefix: String)

Text attributes persistent

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)

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:

pod "LEOTextView"

Author

Tuesleep, [email protected]

License

LEOTextView is available under the MIT license. See the LICENSE file for more info.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published