RichTextKit is a Swift SDK that helps you use rich text in Swift
and SwiftUI
. It has a multi-platform SwiftUI RichTextEditor
that can be added to any app:
This editor supports text styles (bold, italic, underline, etc.), fonts, font sizes, colors, text alignments, image attachments, and much more.
The RichTextEditor
is powered by a multi-platform RichTextView
that bridges UITextView
and NSTextView
and adds APIs to make them work more alike on all platforms.
If you just want to view rich text, you can use the RichTextViewer
SwiftUI view.
RichTextKit can be installed with the Swift Package Manager:
https://github.com/danielsaidi/RichTextKit.git
RichTextKit has a SwiftUI RichTextEditor
that takes a text binding and a RichTextContext
:
struct MyView: View {
@State
private var text = NSAttributedString(string: "Type here...")
@StateObject
var context = RichTextContext()
var body: some View {
RichTextEditor(text: $text, context: context) {
// You can customize the native text view here
}
.focusedValue(\.richTextContext, context)
}
}
The editor uses a RichTextCoordinator
to sync changes between the editor, context, and platform-specific view. You can use the context to change font, colors, alignment etc. and observe context changes to update the UI.
If you just want to display rich text, you can use the RichTextViewer
instead:
struct MyView: View {
private var text = NSAttributedString(...)
var body: some View {
RichTextViewer(text: text)
}
}
RichTextKit comes with a bunch of UI components, keyboard shortcuts & menu commands that make it easy to build a rich text editor.
For more information, please see the getting started guide.
The online documentation has more information, articles, code examples, etc.
The demo app lets you explore the library on iOS and macOS. To try it out, just open and run the Demo
project.
You can sponsor me on GitHub Sponsors or reach out for paid support, to help support my open-source projects.
Your support makes it possible for me to put more work into these projects and make them the best they can be.
Feel free to reach out if you have questions or want to contribute in any way:
- Website: danielsaidi.com
- Mastodon: @[email protected]
- Twitter: @danielsaidi
- E-mail: [email protected]
RichTextKit is available under the MIT license. See the LICENSE file for more info.