我有以下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
将栏向下插入安全区域,效果很好:
但是我需要使用 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))
}
}
当我应用剪辑时,背景颜色不再显示在安全区域中:
我在这里做错了什么?如何剪辑并将背景颜色保留在安全区域?
最佳答案
在这里回答我自己的问题,不确定这是否是最好的解决方案:
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/