我正在尝试使用 SwiftUI 重新创建 Telegram Messenger 消息 TextField。在电报应用程序中,TextField 有填充,当内容滚动时,内容会出现在该填充区域中:
我正在尝试使用 SwiftUI 的 iOS 16
TextField<S>(S, text: Binding<String>, prompt: Text?, axis: Axis)
重新创建它,其中轴是带有 .vertical
修饰符的 .lineLimit(_ number: Int?)
。
但是当我应用填充和滚动时,内容内会出现边框:
如何使用 swiftUI 实现 telegram 的应用程序 UI
TextField
?
我的源代码:
if #available(iOS 16.0, *) {
TextField(
"MainInputView.Message.TextView", text: $messageInputViewModel.message,
prompt: Text("MainInputView.Message.TextView", comment: "Message input placeholder"), axis: .vertical
)
.lineLimit(10)
.padding(.vertical, 8)
.padding(.horizontal, 15)
.background(Color.systemBackground)
.clipShape(RoundedRectangle(cornerSize: .init(width: 20, height: 20)))
}
从 iOS 17 开始,您可以像这样使用新的 contentMargins(::for:) API 到文本编辑器
TextEditor(text: $message)
.contentMargins(.vertical, 8, for: .scrollContent)
.contentMargins(.horizontal, 15, for: .scrollContent)
.background(Color.gray)
它将在滚动内容边缘的内部添加边距,而不是在视图外部。
不幸的是,这不会影响 TextField。