DynamicTextEditor는 사용자의 입력에 따라 높이가 자동으로 조절되는 SwiftUI 기반의 TextEditor Component입니다.
카카오톡 앱의 채팅화면에 TextField와 같이 동적으로 Height가 변하는 TextEditor
🇰🇷 한국어 README | 🇺🇸 English README | 🇯🇵 日本語 README
- ✅ 최대 줄 수 설정 가능
- ✅ placeholder 텍스트 지원
- ✅ 동적으로 height가 변하는 TextEditor
- ✅ Custom Font 적용 가능
- iOS 15+
- SwiftUI
dependencies: [
.package(url: "https://github.com/winwx/DynamicTextEditor.git", branch: "main")
]import SwiftUI
import DynamicTextEditor
@State var text: String = ""
var body: some View {
DynamicTextEditor("내용을 입력해주세요.", text: $text)
}import SwiftUI
import DynamicTextEditor
@State var text: String = ""
var body: some View {
...
HStack(alignment: .bottom, spacing: 16) {
DynamicTextEditor(
"메시지 입력",
text: $text
)
.setFont(uiFont: .systemFont(ofSize: 16))
.setMaxLineCount(8)
.setTextColor(.black)
.setPlaceholderColor(.gray)
.frame(minHeight: 24)
emojiButton()
}
.padding(.vertical, 6)
.padding(.horizontal, 8)
.background(Color.textField_BG)
.cornerRadius(20)
...
}DynamicTextEditor는 SwiftUI의 Modifier 스타일 API로 다양한 속성을 설정할 수 있습니다.
사용할 UIFont를 설정합니다.
DynamicTextEditor("입력", text: $text)
.setFont(uiFont: .systemFont(ofSize: 16, weight: .medium))최대 줄 수를 설정합니다. 기본값은 5입니다.
DynamicTextEditor("입력", text: $text)
.setMaxLineCount(3)텍스트 색상을 설정합니다. 기본값은 '.black'입니다.
DynamicTextEditor("입력", text: $text)
.setTextColor(.gray)텍스트 색상을 설정합니다. 기본값은 '.gray'입니다.
DynamicTextEditor("입력", text: $text)
.setPlaceholderColor(.black)🧪 커스텀 예시
DynamicTextEditor("댓글을 입력하세요", text: $text)
.setFont(uiFont: .systemFont(ofSize: 14))
.setMaxLineCount(4)
.setTextColor(.blue)
.setPlaceholder(.red)
