Render Markdown text in SwiftUI

Overview

MarkdownUI

CI contact: @gonzalezreal

MarkdownUI is a library for rendering Markdown in SwiftUI, fully compliant with the CommonMark Spec.

Supported Platforms

You can use the Markdown SwiftUI view in the following platforms:

  • macOS 11.0+
  • iOS 14.0+
  • tvOS 14.0+

The NSAttributedString extension is available in:

  • macOS 10.12+
  • iOS 11.0+
  • tvOS 11.0+
  • watchOS 3.0+

Usage

You can create a Markdown view in SwiftUI by providing a CommonMark document.

Markdown(
    #"""
    It's very easy to make some words **bold** and other words *italic* with Markdown.

    **Want to experiment with Markdown?** Play with the [reference CommonMark
    implementation](https://spec.commonmark.org/dingus/).
    """#
)

Markdown text

From Swift 5.4 onwards, you can create a Markdown view using an embedded DSL for the contents.

Markdown {
    Heading(level: 2) {
        "Markdown lists"
    }
    "Sometimes you want numbered lists:"
    List(start: 1) {
        "One"
        "Two"
        "Three"
    }
    "Sometimes you want bullet points:"
    List {
        "Start a line with a star"
        "Profit!"
        Item {
            "And you can have sub points:"
            List {
                "Like this"
                "And this"
            }
        }
    }
}

A Markdown view renders text using a body font appropriate for the current platform. You can choose a different font or customize other properties like the foreground color, code font, or heading font sizes using the markdownStyle(_:) view modifier.

Markdown(
    #"""
    ## Inline code
    If you have inline code blocks, wrap them in backticks: `var example = true`.
    """#
)
.markdownStyle(
    DefaultMarkdownStyle(
        font: .system(.body, design: .serif),
        codeFontName: "Menlo",
        codeFontSizeMultiple: 0.88
    )
)

Markdown style

A Markdown view always uses all the available width and adjusts its height to fit its rendered text.

Use the accentColor(_:) view modifier to configure the link color.

Markdown("Play with the [reference CommonMark implementation](https://spec.commonmark.org/dingus/).")
    .accentColor(.purple)

Use modifiers like lineLimit(_:) and truncationMode(_:) to configure how the view handles space constraints.

Markdown("> Knowledge is power, Francis Bacon.")
    .lineLimit(1)

You can set the alignment of the text by using the multilineTextAlignment(_:) view modifier.

Markdown(
    #"""
    There are many different ways to style code with CommonMark. If you
    have inline code blocks, wrap them in backticks: `var example = true`.
    """#
)
.multilineTextAlignment(.trailing)

Text alignment

Using the NSAttributedString Extension

If you are not yet using SwiftUI, you can use the NSAttributedString extension to render Markdown in your app.

let attributedString = NSAttributedString(
    document: #"""
    It's very easy to make some words **bold** and other words *italic* with Markdown.
    """#,
    style: DefaultMarkdownStyle(font: .system(.body))
)

Supported Markdown Elements

MarkdownUI uses the CommonMark reference parser and it is fully compliant with the CommonMark Spec.

You can explore all the capabilities of this package in the companion demo project.

Demo

Installation

You can add MarkdownUI to an Xcode project by adding it as a package dependency.

  1. From the File menu, select Swift Packages › Add Package Dependency…
  2. Enter https://github.com/gonzalezreal/MarkdownUI into the package repository URL text field
  3. Link MarkdownUI to your application target

Other Libraries

Comments
  • Markdown text disappearing after presenting a sheet

    Markdown text disappearing after presenting a sheet

    So I have this app with a rather elaborate view hierarchy. For some reason when I present a sheet on top of the Markdown text then dismiss it the markdown text disappears but everything is else is still there.

    I've tried to present a sheet in a vanilla standalone project and it works fine there. So not sure exactly what triggers this behaviour in my project. But all other UI elements works fine, it's only the markdown view that disappears.

    Any idea why this could happen? Something with the states of the view not re-rendering somehow?

    bug 
    opened by helloniklas 8
  • Markdown appears in SwiftUI preview but not in simulator or on device

    Markdown appears in SwiftUI preview but not in simulator or on device

    This is a strange issue that started occurring to me recently. I made a test app to demonstrate it at https://github.com/antonjazz/MarkdownTest If you look at the MainView.swift file along with its SwiftUI Preview, you'll see the markdown renders fine. But in the Simulator it never appears at all. I'm using Xcode 12.5.1.

    Any ideas?

    opened by antonjazz 8
  • Spacing issues with lists

    Spacing issues with lists

    I notice that when I have nested lists, I get extra spacing when end I end a sublist. Here's an example of markdown and the MarkDownUI rendering below it, using all standard settings:

    MarkDownUI SubList

    Also, I would love to be able to separate all list items slightly (vertically) from each other without increasing the spacing within a multi-line item… but can't figure out how to do that. Any ideas? Thanks!

    bug 
    opened by antonjazz 8
  •  mulitiple line space is not equal, influence by paragraphSeparator

    mulitiple line space is not equal, influence by paragraphSeparator

    screenshot

    just like the screenshot

    and the markedown text is:

    #"""
            作者:[@jedz](https://www.v2ex.com/u/jedz),节点:[#程序员](https://www.v2ex.com/go/programmer) ,31回复,发布时间:2021-04-13 18:54:26
    
            日经问题:笔记软件的选择。。。
    
            用了好多年 OneNote,不过碍于以下几个问题现在想弃坑了:
    
            1. 字体问题,下英文字体动不动变成 calibri,很不爽。(用了 [OneFont]( [https://lxf.me/116](https://lxf.me/116)) 基本解决问题)
    
            2. 对插入代码的支持很差,不支持高亮,而且有时复制出来时会有奇怪的字符,导致粘贴后不能直接运行。
    
            3. 如果在页面中创建了多个框,则不能自适应宽度,然后移动端上就要拖来拖去才能看。
    
            4. 无本地文件( UWP 和 Mac 版)。
    
            然后最近试用了一周 Notion,总体感觉还不错,目前遇到两个问题比较影响体验(也可能是我不会用,求指点
    """#
    

    I found the static let paragraphSeparator = "\u{2029}" caused this bug, if I set it to empty by static let paragraphSeparator = "", it looks ok

    but loose the paragraph's line height between

    bug help wanted 
    opened by oblank 8
  • image-related markdown will hang app

    image-related markdown will hang app

    If I try to render the following in a Markdown view, my app hangs:

    ![alt text](image.jpg)

    This was originally part of a large block of markdown our QA threw at the app, and I whittled it down to this single line.

    Note that there is no actual image image.jpg anywhere, but I wouldn't expect malformed markdown to crash/hang the app. This will be displaying arbitrary markdown that the user inputs as a message so I have little control over it.

    Additional info:

    I have done some more narrowing down of this issue and found that when placed in a simple view, the markdown above works (doesn't display anything, but doesn't hang the app either). But if I embed the view into, say, a TabView, then the app hangs.

    I am attaching a sample project with 3 tabs: 2 dummy tabs, and one containing the markdown snippet above. The app hangs on launch trying to render the view w/ markdown.

    MarkdownUITest.zip

    In addition, here's the relevant view code which triggers the issue:

    struct ContentView: View {
        @Binding var selected: Int
        var body: some View {
            TabView(selection: $selected) {
                // Home View
                Text("Home")
                .tabItem {
                    Image(systemName: "house")
                }
    
                // Browse View
                Text("Browse")
                    .tabItem {
                        Image(systemName: "folder")
                }
    
                // Notifications View
               MarkdownTestView()
                .tabItem {
                    Image(systemName: "bell")
                }
            }
        }
    }
    
    struct MarkdownTestView: View {
        var body: some View {
            Markdown("![alt text](image.jpg)")
        }
    }
    
    bug 
    opened by tsfischer 6
  • Custom fonts variants

    Custom fonts variants

    I'm playing around with the release-1.0 branch, thanks for al the great work on that. I understand that this is still pre-release, so what I am looking for might not be implemented, or not possible at this point.

    I am using a custom font in my project like this.

    Markdown(content)
        .markdownStyle(MarkdownStyle(
            font: MarkdownStyle.Font.custom("MyCustomFont", size: 16.0),
            foregroundColor: MarkdownStyle.Color(uiColor: R.color.primaryColor()!)
    ))
    

    However, now bold and italic text is rendered in this font as well. Is there a way to specify a different variant of my font for bold/italic?

    question 
    opened by danielbuechele 6
  • How to open a link in app (question)

    How to open a link in app (question)

    Right now, the default implementation is to open a browser on the phone, how can one change this to open an in app browser ?

    Any help appreciated. Thank you

    opened by abhinavtatch 5
  • html tag render image size too large

    html tag render image size too large

    This pkg is very helpful for me , thank you ! A bit issue when i render a html tag document , how can i fix it? document = #""" <h2></2> <img src="https://octodex.github.com/images/stormtroopocat.jpg" alt=""/> """#

    image

    opened by jiangdi0924 5
  • NSTextAttachment not rendering when using NSAttributedString(document:, style:)

    NSTextAttachment not rendering when using NSAttributedString(document:, style:)

    Hi,

    I have a use case in my app where I need to extract the NSAttributedString from markdown text. I wanted to use the parser included in MarkdownUI as I think it performs better than others out there. However, I'm struggling to understand why images aren't working properly. It was my understanding that they were included in the NSAttributedString as NSTextAttachments.

    Below is a simple test to highlight the issue. Is there any way you could shed some light on this?

    Many thanks again!

    import SwiftUI
    import MarkdownUI
    import AttributedText
    
    #if os(macOS)
    public typealias PlatformFont = NSFont
    #else
    public typealias PlatformFont = UIFont
    #endif
    
    struct ContentView: View {
        
        var text = """
        # Let's see if this works
        
        Image should appear here:
        ![image](https://endlessicons.com/wp-content/uploads/2012/11/apple-icon.png)
        """
        
        let markdownStyle = MarkdownStyle(font: PlatformFont.system(size: 12))
        
        var body: some View {
            VStack{
                
                AttributedText(NSAttributedString(document: Document(text), style: markdownStyle))
                
                Markdown(Document(text)).markdownStyle(markdownStyle)
                    
            }
        }
    }
    
    struct ContentView_Previews: PreviewProvider {
        static var previews: some View {
            ContentView()
        }
    }
    
    question 
    opened by santi-g-s 5
  • Custom font not working

    Custom font not working

    I'm trying to use custom fonts but can't get it to work. It always renders a system default font (Helvetica). I've tried the following solutions so far:

    Markdown(viewModel.text).markdownStyle(
        MarkdownStyle(
            font: MarkdownStyle.Font.custom("CustomFont-Bold", size: 16.0)
        )
    )
    
    Markdown(viewModel.text).markdownStyle(
        MarkdownStyle(
            font: MarkdownStyle.Font.custom("CustomFont", size: 16.0)
        )
    )
    
    Markdown(viewModel.text)
        .font(.custom("CustomFont", size: 16.0).bold())
    
    Markdown(viewModel.text)
        .font(.custom("CustomFont-Bold", size: 16.0))
    
    bug 
    opened by raulvbrito 4
  • Handle line breaks

    Handle line breaks

    For me MarkdownUI is not rendering line breaks correctly. A single line break is ignored and the text is displayed in one line. Double line breaks are looking fine.

    How can I handle this?

    opened by Urkman 4
  • onTapGesture

    onTapGesture

    I have a Markdown view in my project and would like to switch to an editing mode when you click on it, but onTapGesture is not getting called when I click on the rendered view. Is there another way of achieving this?

    opened by Rukenshia 0
  • [WIP] GitHub Flavored Markdown and native SwiftUI rendering

    [WIP] GitHub Flavored Markdown and native SwiftUI rendering

    About

    Warning This pull request is still a work in progress.

    This pull request contains a rewrite of the library that brings the following features:

    • GitHub Flavored Markdown (autolinks, strikethrough text, task lists, and tables)
    • Native SwiftUI rendering
    • Themes and full customization of inlines and blocks

    Breaking changes

    • MarkdownUI now requires macOS 12+, iOS 15+, tvOS 15+ and watchOS 8+
    • MarkdownUI now uses SwiftUI primitives to render Markdown and no longer depends on gonzalezreal/AttributedText.
    • MarkdownUI brings a new DSL to create Markdown content and no longer depends on gonzalezreal/SwiftCommonMark.
    • MarkdownStyle and all of its subtypes are no longer available. Use the new Theme API to customize the Markdown appearance.
    • MarkdownImageHandler is no longer available. Use the new ImageProvider API to customize the image loading behavior.

    Status

    Markdown rendering and styling:

    • [x] Inline text
    • [x] Images
    • [x] Paragraphs
    • [x] Blockquotes
    • [x] Task lists
    • [x] Lists
    • [x] Code blocks
    • [x] Tables
    • [x] Headings
    • [x] Thematic breaks

    Other stuff:

    • [x] Theme support
    • [x] DocC theme
    • [x] GitHub theme
    • [x] Sample code
    • [x] watchOS support
    • [x] Heading anchors
    • [x] API to integrate a code syntax highlighter
    • [x] API to integrate other image loading systems
    • [ ] Documentation
    opened by gonzalezreal 1
  • Issue preventing default button activating (macOS)

    Issue preventing default button activating (macOS)

    With MarkdownUI present on a form and a default button present, e.g.

            Button(action: {
               someAction() 
            }, label: {
                Text("Ok")
                }
            )
            .keyboardShortcut(.defaultAction)
    

    When the form is displayed, the default button does not have focus of the .defaultAction key binding (i.e. the Enter key). Pressing the default action once does nothing. pressing it again activates the button.

    It would pre preferred if the Markdown content did not steal the focus. This issue is not present on forms with no MarkdownUI view.

    bug 
    opened by bartreardon 0
  • Support for WatchOS

    Support for WatchOS

    Hi,

    First of all, thanks very much for the great library!

    WatchOS support would be very helpful for us - do you have any plans to support WatchOS in the near future?

    Thanks, Adam

    enhancement 
    opened by oco-adam 2
  • `DisclosureGroup` display issue

    `DisclosureGroup` display issue

    Setup

    • iOS 15.5
    • iPhone 12

    SwiftUI view:

    struct FaqView: View {
    
        let faq: Faq
        let navigationBarCtaType: SettingsNavigationCTAType
        private let style = AppStyles.Settings()
        @State private var expandedIds: Set<String> = Set()
    
        func expanded(id: String) -> Binding<Bool> {
            Binding(get: { expandedIds.contains(id) },
                    set: {
                if $0 {
                    expandedIds.insert(id)
                } else {
                    expandedIds.remove(id)
                }
            })
        }
    
        var body: some View {
            List {
                ForEach(faq.content) { section in
                    DisclosureGroup(isExpanded: expanded(id: section.id)) {
                        ForEach(section.questions) { question in
                            DisclosureGroup(isExpanded: expanded(id: question.id)) {
                                VStack { // Hoped this would help but it doesn't
                                    Markdown(question.answer)
                                }
                            } label: {
                                Text(question.title)
                            }
                        }
                    } label: {
                        Text(section.title)
                    }
                }
            }
            .listStyle(.plain)
        }
    }
    

    By default, all disclosure groups are not expanded.

    Mardown:

    # Alors
    
    ## Dites
    
    ### moi 
    
    **Bold me**
    
    *Ça geht's mol ?*
    
    > Quote me [Link me](https://google.com) ![George]
    
    (https://framapiaf.s3.framasoft.org/framapiaf/accounts/avatars/000/056/593/original/3dc8059101ae9d9e.jpg)
    
    Long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long line.
    
    

    Scenario

    • navigate to this view
    • expand first level (section)
    • expand second level (question)

    Result

    IMG_AEB221107048-1

    Expected

    IMG_696812BF98C4-1

    Comments

    When closing then expanding again, the display is correct.

    bug 
    opened by PierreMardon 0
Releases(1.1.1)
  • 1.1.1(Jul 22, 2022)

    What's Changed

    • Update GitHub actions by @gonzalezreal in https://github.com/gonzalezreal/MarkdownUI/pull/110
    • Fix custom font resolution by @gonzalezreal in https://github.com/gonzalezreal/MarkdownUI/pull/111
    • Fix crash when rendering a code block without a closing fence by @gonzalezreal in https://github.com/gonzalezreal/MarkdownUI/pull/112
    • Fix hang when trying to load invalid image by @gonzalezreal in https://github.com/gonzalezreal/MarkdownUI/pull/113
    • Fix rendering thematic break with centered or right aligned text by @gonzalezreal in https://github.com/gonzalezreal/MarkdownUI/pull/114

    Full Changelog: https://github.com/gonzalezreal/MarkdownUI/compare/1.1.0...1.1.1

    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Feb 27, 2022)

    What's Changed

    • Remove MarkdownStyle.Color by @gonzalezreal in https://github.com/gonzalezreal/MarkdownUI/pull/93
    • Resolve fonts considering the environment's size category by @gonzalezreal in https://github.com/gonzalezreal/MarkdownUI/pull/94
    • Use the environment's line spacing by @gonzalezreal in https://github.com/gonzalezreal/MarkdownUI/pull/95

    Full Changelog: https://github.com/gonzalezreal/MarkdownUI/compare/1.0.0...1.1.0

    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Jan 16, 2022)

    What's Changed

    • Breaking change: New stable API and simplified customization appearance
    • Changed: New rendering implementation.
    • Added: Enable loading images from bundles
    • Added: Render thematic breaks
    • Added: Enable custom markdown link handling
    • Added: Make text not selectable on iOS
    • Changed: Improved list rendering.
    • Removed: NSAttributedString based HTML block rendering
    • Infrastructure: Remove watchOS scheme, remove unnecessary availability attributes and replace SwiftFormat with swift-format.
    • Infrastructure: Use Xcode 13.2 for CI
    • Infrastructure: New demo app with tvOS and Catalyst targets
    • Infrastructure: Improved README and documentation
    • Bug fixed: View update issues on iOS 15
    Source code(tar.gz)
    Source code(zip)
  • 0.5.2(Aug 29, 2021)

  • 0.5.1(Feb 27, 2021)

  • 0.5.0(Feb 25, 2021)

    Breaking change

    MarkdownStyle is now a protocol with a default implementation DefaultMarkdownStyle. This new protocol has methods to customise the attributes of each of the different blocks and inlines in a markdown file.

    To customise the font, foreground color, code font or heading font sizes you can use the markdownStyle(_:) view modifier:

    Markdown(
        #"""
        ## Inline code
        If you have inline code blocks, wrap them in backticks: `var example = true`.
        """#
    )
    .markdownStyle(
        DefaultMarkdownStyle(
            font: .system(.body, design: .serif),
            codeFontName: "Menlo",
            codeFontSizeMultiple: 0.88
        )
    )
    
    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Feb 12, 2021)

    • CommonMark parsing moved to gonzalezreal/SwiftCommonMark

    • SwiftCommonMark adds an embedded DSL to create CommonMark documents. This allows a new syntax when constructing Markdown views:

      Markdown {
          Heading(level: 2) {
              "Result builders are cool!"
          }
          "Sometimes you want bullet points:"
          List {
              "Start a line with a star"
              "Profit!"
          }
          "Sometimes you want numbered lists:"
          List(start: 1) {
              "One"
              "Two"
              "Three"
          }
      }
      
    Source code(tar.gz)
    Source code(zip)
  • 0.3.4(Jan 25, 2021)

  • 0.3.3(Jan 16, 2021)

  • 0.3.2(Jan 14, 2021)

  • 0.3.1(Jan 13, 2021)

  • 0.3.0(Jan 8, 2021)

    • Scale images to fit the Markdown view
    • Fix build for Mac Catalyst environment
    • Update AttributedText dependency to 0.2.1. This fixes the layout issues in macOS.
    • Add support for relative URLs in markdown images, using the markdownBaseURL view modifier.
    • Add initializers to create a Document with the content of the file at a given path.
    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(Jan 3, 2021)

    • Use AttributedText 0.2.0, which improves how the view height adapt to its contents
    • Add Markdown snapshot tests, replacing the renderer tests (and thus fixing #20)
    Source code(tar.gz)
    Source code(zip)
  • 0.1.1(Dec 31, 2020)

Owner
Guille Gonzalez
Mobile developer. Converting coffee into code since the nineties. Comic book lover and movie buff.
Guille Gonzalez
A SwiftUI view for displaying Markdown with customizable appearances.

Parma Display Markdown using pure SwiftUI components. Taking advantages of ViewBuilder to make custom appearances for Text and View. Example import Pa

DasAuto 735 Jan 3, 2023
SwiftUI TextEdit View - A proof-of-concept text edit component in SwiftUI & CoreText.

A proof-of-concept text edit component in SwiftUI & CoreText. No UIKit, No AppKit, no UITextView/NSTextView/UITextField involved.

Marcin Krzyzanowski 80 Dec 1, 2022
A SwiftUI TextField with a prompt (or placeholder) that floats above the text field when active or not empty. Requires iOS 15.

FloatingPromptTextField A prompt is the label in a text field that informs the user about the kind of content the text field expects. In a default Tex

Emilio Peláez 43 Nov 3, 2022
Focus text field in SwiftUI dynamically and progress through form using iOS keyboard.

Focuser Focuser allows to focus SwiftUI text fields dynamically and implements ability move go through the form using Keyboard for iOS 13 and iOS 14.

Art Technologies 118 Dec 25, 2022
Autocomplete for a text field in SwiftUI using async/await

Autocomplete for a text field in SwiftUI using async/await

Dmytro Anokhin 13 Oct 21, 2022
Currency text field formatter available for UIKit and SwiftUI 💶✏️

CurrencyText provides lightweight libraries for formating text field text as currency, available for both UIKit and SwiftUI. Its main core, the Curren

Felipe Lefèvre Marino 183 Dec 15, 2022
ExpandableText 😎 (SwiftUI) Expand the text with the "more" button

ExpandableText ?? (SwiftUI) Expand the text with the "more" button Get Started import SwiftUI import ExpandableText struct ExpandableText_Test: View

null 35 Dec 26, 2022
Transition from any SwiftUI Text view into an inline navigation bar title when the view is scrolled off-screen, as seen in Apple's TV & TestFlight iOS apps.

SwiftUI Matched Inline Title Transition from any SwiftUI Text view into an inline navigation bar title when the view is scrolled off-screen, as seen i

Seb Jachec 19 Oct 9, 2022
RichTextKit is a Swift-based library for working with rich text in UIKit, AppKit and SwiftUI.

About RichTextKit RichTextKit is a Swift-based library that lets you work with rich text in UIKit, AppKit and SwiftUI. RichTextKit is under developmen

Daniel Saidi 282 Dec 28, 2022
AEOTPTextField - A beautiful iOS OTP Text Field library, written in Swift with full access customization in UI.

AEOTPTextField - A beautiful iOS OTP Text Field library, written in Swift with full access customization in UI.

Abdelrhman Kamal 79 Jan 3, 2023
A beautiful and flexible text field control implementation of "Float Label Pattern". Written in Swift.

SkyFloatingLabelTextField SkyFloatingLabelTextField is a beautiful, flexible and customizable implementation of the space saving "Float Label Pattern"

Skyscanner 4k Jan 1, 2023
Handles some of the base configuration to make creating a UIAlertController with text entry even easier. Plus validation!

?? FancyTextEntryController A simpler/easier API for adding text fields to UIAlertControllers. Not a custom view, just uses good ol' UIAlertController

Christian Selig 22 Jul 18, 2022
Changes the color of the label text when the button is pressed and also prints hello to the console

MY FIRST APP App Description This app changes the color of the label text when the button is pressed and also prints "hello" to the console. App Walk-

null 0 Nov 29, 2021
ARAutocompleteTextView is a subclass of UITextView that automatically displays text suggestions in real-time

ARAutocompleteTextView is a subclass of UITextView that automatically displays text suggestions in real-time. This is perfect for automatically suggesting the domain as a user types an email address, #hashtag or @alexruperez.

Alex Rupérez 261 Jun 29, 2022
UITextField and UITextView subclasses with placeholders that change into floating labels when the fields are populated with text.

Deprecated Please use JVFloatLabeledTextField instead or feel free to chime in on an issue if you'd like to take over the repo. RPFloatingPlaceholders

rob phillips 1.1k Jan 5, 2023
UITextField that automatically formats text to display in the currency format

CurrencyTextField The numbers that the user enters in the field are automatically formatted to display in the dollar amount format. For example, if th

Richa Deshmukh 49 Sep 28, 2022
A text view that supports selection and expansion

The Problem UILabel and UITextView offer unsatisfying support for text selection. Existing solutions like TTTAttributedLabel are great but offer a som

Jeff Hurray 636 Dec 20, 2022
Declarative text styles and streamlined Dynamic Type support for iOS

StyledText StyledText is a library that simplifies styling dynamic text in iOS applications. Instead of having to use attributed strings every time yo

Blue Apron 233 Oct 18, 2022
Lightweight set of text fields with nice animation and functionality

TweeTextField This is lightweight library that provides different types of Text Fields based on your needs. I was inspired by Jan Henneberg. Features

Oleg 471 Nov 10, 2022