【发布时间】:2020-03-28 05:17:15
【问题描述】:
我想在 SwiftUI 中以形状(例如 Square)的形式添加文本(例如 Hi),并使它们充当单个对象。
在 SwiftUI 中似乎没有直接的方法可以在形状中添加文本。
【问题讨论】:
-
我从以下解决方案开始,但最终使用了 SO answer 中的视图扩展,因为它在您想要圆角的角落提供了更多的灵活性。
我想在 SwiftUI 中以形状(例如 Square)的形式添加文本(例如 Hi),并使它们充当单个对象。
在 SwiftUI 中似乎没有直接的方法可以在形状中添加文本。
【问题讨论】:
这是,IMO,最简单的方法:
通用架构
Text(_any_of_text_)
.background(_any_of_Shape)
例如:
Text("Hello, World!")
.background(Rectangle().stroke())
Text("Hello, World!")
.background(RoundedRectangle(cornerRadius: 4).stroke())
【讨论】:
这是我认为更全面的答案。这将从 Xcode 11.5 开始工作:
Text(question)
.fixedSize(horizontal: false, vertical: true)
.multilineTextAlignment(.center)
.padding()
.frame(width: 300, height: 200)
.background(Rectangle().fill(Color.white).shadow(radius: 3))
注意事项:
此示例的最终结果是文本看起来像提示卡一样的形状!
【讨论】:
Text("Hi")
.frame(width: 40, height: 40, alignment: .center)
.background(Color.black)
.clipShape(Rectangle())
【讨论】:
创建一个新的 SwiftUI 视图并使用 Z-Stack 来创建您的目标。
struct YourCustomObject: View {
var body: some View {
ZStack {
Rectangle()
.fill(Color.secondary)
.frame(width: 200, height: 200)
Text("Your desired text")
.foregroundColor(.white)
}
}
}
【讨论】: