https://github.com/n3d1117/expandabletext
App Store-like SwiftUI expandable text view with "more" button, iOS 13+, fully customizable
https://github.com/n3d1117/expandabletext
ios swift swiftui swiftui-text xcode
Last synced: 11 months ago
JSON representation
App Store-like SwiftUI expandable text view with "more" button, iOS 13+, fully customizable
- Host: GitHub
- URL: https://github.com/n3d1117/expandabletext
- Owner: n3d1117
- License: unlicense
- Created: 2023-02-25T13:58:52.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-07-10T09:19:27.000Z (over 1 year ago)
- Last Synced: 2025-04-12T22:55:10.590Z (11 months ago)
- Topics: ios, swift, swiftui, swiftui-text, xcode
- Language: Swift
- Homepage: https://edoardo.fyi/blog/2022/07/swiftui-expandable-text/
- Size: 25.4 KB
- Stars: 59
- Watchers: 2
- Forks: 16
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ExpandableText
[](https://github.com/n3d1117/ExpandableText/actions/workflows/build.yml)
[](https://github.com/apple/swift/)
[](https://github.com/apple/ios/)
[](https://developer.apple.com/xcode/)
[](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](https://developer.apple.com/documentation/swift_packages/adding_package_dependencies_to_your_app). 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](https://github.com/JThramer))
- Support custom expand animation
- Automatically trim multiple new lines when truncated (can be disabled)
## Usage
### Basic usage
```swift
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)
```

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

## Credits
- [NuPlay/ExpandableText](https://github.com/NuPlay/ExpandableText) for inspiration and some portions of code
## License
Available under The Unlicense license. See [LICENSE](LICENSE) file for further information.