SwiftUI drawingGroup()方法应用于使用ForEach构建的视图时,似乎出现了错误

SwiftUI drawingGroup()方法应用于使用ForEach构建的视图时,似乎出现了错误,swiftui,Swiftui,在SwiftUI中,当使用.drawingGroup()展平视图时,如果视图生成器使用ForEach,我会得到与预期不同的结果。下面的示例代码导致视图错误地仅显示两个圆。如果我注释掉.drawingGroup()调用,那么视图将正确显示菱形结构中的四个圆 有没有办法绕过这个问题?当.drawingGroup()工作时,它在提高内存性能方面似乎非常有效,如果可以的话,我想使用它 struct DrawingGroupView: View { var offsets = [CGPoint(x

在SwiftUI中,当使用.drawingGroup()展平视图时,如果视图生成器使用ForEach,我会得到与预期不同的结果。下面的示例代码导致视图错误地仅显示两个圆。如果我注释掉.drawingGroup()调用,那么视图将正确显示菱形结构中的四个圆

有没有办法绕过这个问题?当.drawingGroup()工作时,它在提高内存性能方面似乎非常有效,如果可以的话,我想使用它

struct DrawingGroupView: View {
    var offsets = [CGPoint(x: 0, y: -1), CGPoint(x: -1, y: 0),
                   CGPoint(x: 1, y: 0), CGPoint(x: 0, y: 1)]
    var width: CGFloat = 90
    var body: some View {
        ZStack {
            ForEach(0..<4) { index in
                Circle()
                    .offset(
                        x: offsets[index].x * width,
                        y: offsets[index].y * width
                    )
                    .frame(width: width)
            }
        }
        .drawingGroup()
    }
}
struct DrawingGroupView:视图{
风险值偏移=[CGPoint(x:0,y:-1),CGPoint(x:-1,y:0),
CGPoint(x:1,y:0),CGPoint(x:0,y:1)]
变量宽度:CGFloat=90
var body:一些观点{
ZStack{

ForEach(0..的
.offset
修改器不会改变视图的布局,所以视图的宽度仍然等于一个圆的宽度,所以展平视图时,您只能看到两个视图进入容器

要解决这个问题,最简单的方法似乎是使容器屏幕变宽,如

    }
    .frame(maxWidth: .infinity, maxHeight: .infinity)   // << here !!
    .drawingGroup()
}

.frame(maxWidth:.infinity,maxHeight:.infinity)//哇-太快了。谢谢!我现在就尝试采用它