RichTextKit is a Swift SDK that lets you edit rich text in Swift
& SwiftUI
with a multi-platform RichTextEditor
:
The RichTextEditor
supports text styles (bold, italic, underline, etc.), fonts, font sizes, colors, text alignments, image attachments, and much more. It's powered by a RichTextView
that bridges UITextView
& NSTextView
and adds additional, platform-agnostic APIs that make the two views behave more alike.
If you just want to view rich text connte, you can use the RichTextViewer
SwiftUI view, which wraps the editor and applies a read-only configuration to it.
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 provides UI components, keyboard shortcuts & menu commands that can be used in a rich text editor.
For more information, please see the getting started guide.
The online documentation has more information, articles, code examples, etc.
The RichTextKit demo lets you explore the library on iOS & macOS. To try it out, just open and run the Demo
app.
RichTextKit is also used in the following apps, so make sure to check them out for inspiration:
Don't hesitate to reach out if you are using RichTextKit, and want to add your app to this list. I'd love to feature it.
Please consider supporting my work if you find this and my other open-source projects helpful. I manage them on my spare time, and any help to keep them going is greatly appreciated.
You can sponsor me on GitHub Sponsors, reach out for paid support, or hire me for freelance work.
Feel free to reach out if you have questions or want to contribute in any way:
RichTextKit is available under the MIT license. See the LICENSE file for more info.
link |
Stars: 762 |
Last commit: 15 hours ago |
This release removes all deprecated code and cleans up the library.
RichTextFormat
is a new namespace with format types and views.RichTextContext
has more intuitive ways to paste text content.RichTextContext
has a new observable paragraphStyle
property.RichTextInsertion
has new static convenience insertion builders.RichTextViewer
is a new SwiftUI view that can be used to view rich text.RichTextView
no longer resets font and styles when setting up the macOS text view.RichTextContextFocusedValueKey
is renamed to RichTextContext.FocusedValueKey
.RichTextEditor
is now configured and styled with modifiers instead of the init.RichTextFont
pickers are now configured with a shared modifier instead of the init.RichTextFont
size picker is now configured with a shared modifier instead of the init.RichTextFormat
components are now configured with a shared modifier instead of the init.RichTextFormatSheet
has been renamed to RichTextFormat.Sheet
to trim SDK surface area.RichTextFormatSidebar
has been renamed to RichTextFormat.Sidebar
to trim SDK surface area.RichTextFormatToolbar
has been renamed to RichTextFormat.Toolbar
to trim SDK surface area.RichTextLine.SpacingPicker
is now configured with a shared view modifier instead of the init.RichTextKeyboardToolbar
is now configured and styled with two view modifiers instead of the init.Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics