SwiftUI 向视图添加 -y 偏移量,但将视图拉伸到底部

Posted

技术标签:

【中文标题】SwiftUI 向视图添加 -y 偏移量,但将视图拉伸到底部【英文标题】:SwiftUI add a -y offset to a view but stretching the view to bottom 【发布时间】:2019-09-15 20:06:12 【问题描述】:

我的代码中有 2 个视图,一个 VStack,然后是一个自定义视图。

我正在为 -75 的第二个视图添加偏移量,以将其移动到第一个视图的顶部。

这是我当前的代码:

Group 
       VStack 
           //First View
           VStack 
               Image("LogoCrest")

                NavigationLink(destination: LocationSearch()) 
                    Text("Find a location")
                    .foregroundColor(Color.white)
                    .bold()
                    .padding()
                
                .frame(minWidth: 0, maxWidth: .infinity, alignment: Alignment.center)
                .background(Color(red: 81 / 255, green: 175 / 255, blue: 67 / 255))
                .cornerRadius(7)
                .padding()

           
           .padding(.top, 75)
           .padding(.bottom, 75)
           .frame(minWidth: 0, maxWidth: .infinity, alignment: Alignment.center)
           .background(Color(red: 49 / 255, green: 49 / 255, blue: 49 / 255))

           //Second view
           CircuitList(Circuits: Circuits)
            .offset(y: -75)
           .padding()
       
     
    .background(Color(red: 232 / 255, green: 232 / 255, blue: 232 / 255))
    .edgesIgnoringSafeArea(.top)

如何增加第二个视图的高度,使其始终位于底部(请参阅下图中的黑线以获得所需的额外高度)?

【问题讨论】:

【参考方案1】:

我找到了答案。 由于我在视图中添加了y:-75 偏移量,因此我也必须添加y:-75 填充。

CircuitList(Circuits: Circuits)
    .offset(y: -75)
    .padding()
    .padding(.bottom, -75)

【讨论】:

是的,当我们使用 offset() 修饰符时,我们改变了视图应该被渲染的位置,而实际上并没有改变它的底层几何图形。这就是为什么我们必须添加减号填充。 我正在寻找的完美答案

以上是关于SwiftUI 向视图添加 -y 偏移量,但将视图拉伸到底部的主要内容,如果未能解决你的问题,请参考以下文章

自定义大小的表格视图仍然使用导航栏的偏移量

SwiftUI:我可以向 TabView 添加更多视图,然后是选项卡项吗?

SwiftUI - 有没有办法在不覆盖子视图的任何手势的情况下向视图添加手势?

如何在 SwiftUI 中复制此阴影 + 偏移

使用 ForEach 分层视图并使用 ZStack 偏移以创建一堆扑克筹码 (SwiftUI)

在 Flutter 中保持滚动视图偏移的同时添加列表视图项