在SwiftUI中将不透明度应用到视图中,将其向下传递到层次 struct 中,看起来它的效果有点像环境值.当每个子视图独立地受不透明度影响时,它会导致这种行为.无论我们是将黄色圆圈与覆盖层、背景还是ZStack放在一起.
我们如何使不透明度仅影响父视图,就像它在UIKit中的行为一样,使整个视图及其所有内容成为半透明的单个实体对象?
struct OpacityTest: View {
var body: some View {
HStack(spacing: 30) {
buttonContent
.opacity(0.5)
Button(action: {}) {
buttonContent
}
}
}
var buttonContent: some View {
Image(systemName: "calendar.circle")
.resizable()
.frame(width: 65, height: 65)
.overlay(
Circle()
.fill(Color.yellow)
.frame(width: 40, height: 40)
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topTrailing)
)
}
}
struct OpacityTest_Preview: PreviewProvider {
static var previews: some View {
OpacityTest()
}
}
Update:
.overlay(
Circle()
.fill(Color.yellow)
.frame(width: 40, height: 40)
.offset(x: 10, y: -10) //This modifier brakes the drawingGroup
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topTrailing)
)