Coder Social home page Coder Social logo

expandabletext's Introduction

ExpandableText

build swift-version ios-version macos-version xcode-version license

An expandable text view that displays a truncated version of its contents with a "more" button that expands the view to show the full contents.

iOS 13+ compatible, fully customizable, written in SwiftUI.

Installation

Available via the Swift Package Manager. Requires iOS 13+.

https://github.com/n3d1117/ExpandableText

Features

  • Customizable line limit
  • Customizable font, color, and more button appearance with SwiftUI-like modifiers
  • Automatically hide more button if the whole text fits within the view
  • Support right-to-left languages
  • Support re-collapsing text by tapping on expanded text body (by @JThramer)
  • Support custom expand animation
  • Automatically trim multiple new lines when truncated (can be disabled)

Usage

Basic usage

import ExpandableText

let loremIpsum = """
Lorem ipsum dolor sit amet, consectetur adipiscing 
elit, sed do eiusmod tempor incididunt ut labore et 
dolore magna aliqua. Ut enim ad minim veniam, quis 
nostrud exercitation ullamco laboris nisi ut aliquip 
ex ea commodo consequat. Duis aute irure dolor in 
reprehenderit in voluptate velit esse cillum dolore 
eu fugiat nulla pariatur.
"""

ExpandableText(loremIpsum)

Basic usage demo

Customization options

ExpandableText(loremIpsum)
  .font(.headline)
  .foregroundColor(.secondary)
  .lineLimit(4)
  .moreButtonText("read more")
  .moreButtonFont(.headline.bold())
  .moreButtonColor(.red)
  .enableCollapse(true)
  .expandAnimation(.easeInOut(duration: 2))
  .trimMultipleNewlinesWhenTruncated(false)

Customization demo

Credits

License

Available under The Unlicense license. See LICENSE file for further information.

expandabletext's People

Contributors

jmshgs avatar n3d1117 avatar jthramer avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.