我想制作一个里面有文字的矩形。矩形应固定在显示器(或超级视图)的右侧和左侧。它的高度应该由文字决定。
我尝试了以下代码:
struct DescriptionView: View {
var description =
"""
02.11.2021
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Illud urgueam, non intellegere eum quid sibi dicendum sit, cum dolorem summum malum esse dixerit. Omnis enim est natura diligens sui. Quamquam haec quidem praeposita recte et reiecta dicere licebit. Duo Reges: constructio interrete. Idem iste, inquam, de voluptate quid sentit? Ergo instituto veterum, quo etiam Stoici utuntur, hinc capiamus exordium. Tum ille: Tu autem cum ipse tantum librorum habeas, quos hic tandem requiris? Bona autem corporis huic sunt, quod posterius posui, similiora..
Bild © Lorem Lipsum
"""
var body: some View {
ZStack(alignment: .bottom) {
Color.red
.edgesIgnoringSafeArea(.all)
Text(description)
.foregroundColor(.white)
.font(.headline)
.background(
Rectangle()
)
.edgesIgnoringSafeArea(.horizontal)
}
}
}
如您所见,文本的左侧和右侧都有一些填充。我怎样才能摆脱这个?矩形应始终尽可能宽,而文本决定矩形的高度。
更新: 我使用的是 Xcode 版本 13.1 (13A1030d)。当我在 TabView 中嵌入 DescriptionView() 时,填充在 Xcode Preview 中消失了。但是,当我在模拟器中启动应用程序时,填充再次出现。
struct ContentView: View {
var body: some View {
ZStack {
Color.black
.edgesIgnoringSafeArea(.all)
TabView {
DescriptionView()
DescriptionView()
DescriptionView()
}
.tabViewStyle(PageTabViewStyle())
.indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .interactive))
}
}
}
Xcode 预览:
模拟器:
更新 2: 作为建议的答案之一,我尝试了几何阅读器。我摆脱了填充,但现在对齐是错误的。另外我认为它不应该那么复杂(带有几何阅读器和堆栈):
var body: some View {
ZStack(alignment: .bottom) {
Color.red
.edgesIgnoringSafeArea(.all)
GeometryReader { geometry in
VStack() {
Text(description)
.foregroundColor(.white)
.font(.headline)
.frame(maxWidth: .infinity)
.background(
Color.black
)
}
}
}
}