如何为 SwiftUI 可滚动 TextField 设置 contentInset?

问题描述 投票:0回答:1

我正在尝试使用 SwiftUI 重新创建 Telegram Messenger 消息 TextField。在电报应用程序中,TextField 有填充,当内容滚动时,内容会出现在该填充区域中:

enter image description hereenter image description here

我正在尝试使用 SwiftUI 的 iOS 16

TextField<S>(S, text: Binding<String>, prompt: Text?, axis: Axis)
重新创建它,其中轴是带有
.vertical
修饰符的
.lineLimit(_ number: Int?)

但是当我应用填充和滚动时,内容内会出现边框:

enter image description here

如何使用 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 swift swiftui textfield
1个回答
0
投票

从 iOS 17 开始,您可以像这样使用新的 contentMargins(::for:) API 到文本编辑器

TextEditor(text: $message)
    .contentMargins(.vertical, 8, for: .scrollContent)
    .contentMargins(.horizontal, 15, for: .scrollContent)
    .background(Color.gray)

它将在滚动内容边缘的内部添加边距,而不是在视图外部。

不幸的是,这不会影响 TextField。

© www.soinside.com 2019 - 2024. All rights reserved.