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