在 SwiftUI 中,为啥 Spacer 会将文本推送到 TextEditor 框架之外?
Posted
技术标签:
【中文标题】在 SwiftUI 中,为啥 Spacer 会将文本推送到 TextEditor 框架之外?【英文标题】:In SwiftUI, why does a Spacer push the text outside of the TextEditor frame?在 SwiftUI 中,为什么 Spacer 会将文本推送到 TextEditor 框架之外? 【发布时间】:2021-02-02 04:07:48 【问题描述】:在下面的代码中,为什么 TextEditor 的框架停留在安全区域内,而文本被推到屏幕顶部,超出安全区域,在 TextEditor 的框架之外?
VStack
TextEditor(text: $myText)
.frame(height: 200)
.border(Color.red)
Spacer()
【问题讨论】:
【参考方案1】:你必须使用.padding()
来调整文本框。
添加填充就像在 UITextView 中添加 textContainerInset
。
这样
struct TestFrameView: View
@State private var myText: String = "Hello"
var body: some View
VStack
TextEditor(text: $myText)
.padding() //<-- here or .padding(.top, 0.1) for zero space.
.frame(height: 200)
.border(Color.red)
Spacer()
【讨论】:
确实可以解决问题,谢谢您的回答。我仍然不明白为什么文本被推出框架。 Spacer 对 TextEditor 框架和 TextEditor 内部文本的作用是否不同? @rawbee 我认为这是一个 50% 的错误。是的,它就像一个 TextEditor 框架和 Text 内部,因为通过设置填充,您可以更改 Text 的位置。以上是关于在 SwiftUI 中,为啥 Spacer 会将文本推送到 TextEditor 框架之外?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swiftui 的主视图底部的滚动视图中放置一个非粘性按钮? Spacer 在滚动视图中似乎没有效果