SwiftUI:设置工作表呈现视图的背景色

时间:2019-08-01 00:03:51

标签: swift swiftui

有没有一种方法可以指定用于在SwiftUI中显示工作表的视图的背景颜色?我知道我可以在视图中设置.background,但是在iPhone X上不会影响安全区域。我也可以使用.edgesIgnoringSafeArea来填充该区域,但我不希望对此感到困惑。

enter image description here

3 个答案:

答案 0 :(得分:2)

最后,您需要处理edgesIgnoringSafeArea,因为您需要超出安全区域(必须在UIKit中执行相同的操作)。重要的是,您只忽略背景的安全区域。因此,就SwiftUI而言,您只需要将edgesIgnoringSafeArea应用于传递给background的视图:

struct ContentView: View {
    var body: some View {
        VStack {
            Text("hey there")
            Text("Another line")
        }.background(Color.blue.edgesIgnoringSafeArea(.all))
    }
}

但是,这要求您在background上使用的视图已经请求了所有可用空间(在上面的示例代码中不是这种情况),因为background仅绘制视图的背景,而不会自行填充屏幕。如果您不是这种情况,则需要使用your answer中所示的ZStack

答案 1 :(得分:0)

更多地迷上了这个并且着手解决这个问题

struct BackgroundFillView<Content: View>: View {
    let backgroundColor: Color
    let content: () -> Content

    var body: some View {
        ZStack {
            self.backgroundColor.edgesIgnoringSafeArea(.all)
            self.content()
        }
    }
}

答案 2 :(得分:0)

我通过 Introspect 找到了解决此问题的方法,您可以在 https://github.com/siteline/SwiftUI-Introspect 上找到它,然后在您的 SwiftUI 视图中执行此操作:

npm install
react-native start
react-native run-android