swift - 在 SwiftUI View 中应用 ClipShape 时,背景颜色从安全区域消失

标签 swift swiftui

我有以下SwiftUI View:

var body: some View {
    VStack {
        Spacer()

        HStack(alignment: .center, spacing: Constants.horizontalSpacing) {
            VStack(spacing: Constants.verticalSpacing) {
                PaletteBar()
                    .environmentObject(state)

                slider
                    .padding(Constants.sliderInsets)
            }
        }
        .padding(Constants.insets)
        .background(Constants.backgroundColor)
    }
}

我使用 Spacer 将栏向下插入安全区域,效果很好:

enter image description here

但是我需要使用 clipShape 将此工具栏的角变圆:

var body: some View {
    VStack {
        Spacer()

        HStack(alignment: .center, spacing: Constants.horizontalSpacing) {
            VStack(spacing: Constants.verticalSpacing) {
                PaletteBar()
                    .environmentObject(state)

                slider
                    .padding(Constants.sliderInsets)
            }
        }
        .padding(Constants.insets)
        .background(Constants.backgroundColor)
        .clipShape(RoundedRectangle(cornerRadius: 15.0))
    }
}

当我应用剪辑时,背景颜色不再显示在安全区域中:

enter image description here

我在这里做错了什么?如何剪辑并将背景颜色保留在安全区域?

最佳答案

在这里回答我自己的问题,不确定这是否是最好的解决方案:

var body: some View {
    VStack {
        Spacer()

        ZStack {
            Constants.backgroundColor
                .clipShape(RoundedRectangle(cornerRadius: 15.0))
                .ignoresSafeArea(edges: .bottom)

            HStack(alignment: .center, spacing: Constants.horizontalSpacing) {
                VStack(spacing: Constants.verticalSpacing) {
                    PaletteBar()
                        .environmentObject(state)

                    slider
                        .padding(Constants.sliderInsets)
                }
            }
            .padding(Constants.insets)
        }
    }
}

似乎ZStack是正确的选择

关于swift - 在 SwiftUI View 中应用 ClipShape 时,背景颜色从安全区域消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72507187/

相关文章:

ios - 如何解决 iOS Team Provisioning Profile 警告

ios - AVAudioSession 更改类别卡住 AVCapture 屏幕

ios - 具有状态和绑定(bind)的 ForEach NavigationLink

swiftui - 如何在 ScrollView 中执行 View 的动画转换?

swift - 为什么 reduce 对 Struct 不起作用?

ios - 快速从 API 解析 CSV 文件时不使用分隔符分隔

swift - 索引的不同行为(在 :) in Collection and String 之后

ios - SwiftUI/iOS |在没有 NSNotification 的情况下获取键盘大小

ios - SwiftUI - 状态栏文本下方的列表滚动

arrays - 点击手势 Swiftui