我不知道什么是compositingGroup()。起初,我认为它类似于Photoshop中的Merging layers
。但事实并非如此。因为即使使用.compositingGroup(),.shadow()也会分别影响覆盖视图和背景视图。
到目前为止,当我使用.compositingGroup()时,我发现了2个差异
compositingGroup的用途是什么?
struct ContentView: View {
var body: some View {
VStack(spacing: 50) {
Text("Without\ncompositing")
.font(.largeTitle)
.bold()
.padding()
.foregroundColor(Color.white)
.background(RoundedRectangle(cornerRadius: 30).fill(Color.red))
.padding()
.padding()
.overlay(RoundedRectangle(cornerRadius: 30).stroke(lineWidth: 10))
.shadow(color: .blue, radius: 5)
Text("With\ncompositing")
.font(.largeTitle)
.bold()
.padding()
.foregroundColor(Color.white)
.background(RoundedRectangle(cornerRadius: 30).fill(Color.red))
.padding()
.padding()
.overlay(RoundedRectangle(cornerRadius: 30).stroke(lineWidth: 10))
.compositingGroup() // <--- I added .compositingGroup() here.
.shadow(color: .blue, radius: 5)
}
}
}
答案 0 :(得分:1)
以类似于.drawingGroup()
的方式,它展平了视图层次结构。我不知道这与阴影有什么关系。
drawingGroup()
展平为单个UIView / NSView,并使用Metal将其渲染为图像,以非常快速地渲染复杂视图。
也许.compositingGroup()
是这样做的,但是没有Metal。