SwiftUI 标题/标题文本背景颜色屏幕宽

SwiftUI Header/Title Text Background Color Screen Wide

提问人:Peter 提问时间:10/18/2023 最后编辑:HangarRashPeter 更新时间:10/18/2023 访问量:88

问:

我想为“Sebastian's Favorite Stuff”设置背景颜色以涵盖整个区域。目前它看起来像这样,我想覆盖空白。

App Layout

我的代码如下:

var body: some View {
    VStack{
        GridRow{
            Text("SEBASTIAN'S FAVORITE STUFF")
                .lineLimit(1)
                .padding(10)
                .font(.system(size: 500))
                .minimumScaleFactor(0.01)
                .colorInvert()
        }
        .background(Color(red: 0.18 , green: 0.59 , blue: 0.65 ))
        HStack{
            ScrollView{
                Grid{

我需要调整什么才能填充区域而不仅仅是文本背景?

iOS Swift SwiftUI iPad

评论

1赞 workingdog support Ukraine 10/18/2023
你可以尝试这样的事情:ZStack { Color(red: 0.18, green: 0.59, blue: 0.65).ignoresSafeArea() VStack { ...
0赞 Peter 10/18/2023
@workingdogsupportUkraine 获胜者。非常感谢。

答:

1赞 zmfrew 10/18/2023 #1

如果将 作为最后一个修饰符链接,则背景颜色应延伸到左边缘和右边缘。.frame(maxWidth: .infinity)Text

1赞 Benzy Neez 10/18/2023 #2

A 应是 A 的子项。所以在这种情况下,我不会使用 a,而只是单独使用。GridRowGridGridRowText

然后,您需要做的就是强制文本使用全宽。由于背景将触及安全区域的边缘,因此它也会延伸到安全区域。这是因为您正在使用(带圆括号)。的缺省参数是 。background(_:ignoresSafeAreaEdges:)ignoresSafeAreaEdgesEdge.Set.all

喜欢这个:

VStack{
    Text("SEBASTIAN'S FAVORITE STUFF") // not nested in a GridRow any more
        .lineLimit(1)
        .padding(10)
        .font(.system(size: 500))
        .minimumScaleFactor(0.01)
        .colorInvert()
        .frame(maxWidth: .infinity) // added
        .background(Color(red: 0.18 , green: 0.59 , blue: 0.65 ))
    HStack {
        ScrollView {
            Grid{

如果你想填满整个屏幕背景,那么你可以将背景向上移动一个级别,然后把它放在后面。上不再需要 。两者都不需要,因为会强制填充所有可用空间(a 是贪婪的)。VStackmaxWidthTextVStackScrollViewVStackScrollView

VStack{
    Text("SEBASTIAN'S FAVORITE STUFF")
        .lineLimit(1)
        .padding(10)
        .font(.system(size: 500))
        .minimumScaleFactor(0.01)
        .colorInvert()
    HStack {
        // as before
    }
}
.background(Color(red: 0.18 , green: 0.59 , blue: 0.65 ))

如果这仍然留下一些空白,那么你需要看看下一个父母,依此类推。