ExpandableText
App Store-like SwiftUI expandable text view with "more" button, iOS 13+, fully customizable
Install / Use
/learn @n3d1117/ExpandableTextREADME
ExpandableText
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
morebutton appearance with SwiftUI-like modifiers - Automatically hide
morebutton 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
<table> <tr> <td>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)
</td>
<td>

Customization options
<table> <tr> <td>ExpandableText(loremIpsum)
.font(.headline)
.foregroundColor(.secondary)
.lineLimit(4)
.moreButtonText("read more")
.moreButtonFont(.headline.bold())
.moreButtonColor(.red)
.enableCollapse(true)
.expandAnimation(.easeInOut(duration: 2))
.trimMultipleNewlinesWhenTruncated(false)
</td>
<td>

Credits
- NuPlay/ExpandableText for inspiration and some portions of code
License
Available under The Unlicense license. See LICENSE file for further information.
</tr> </table>Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
