gpt4 book ai didi

SwiftUI drawingGroup() 方法在应用于使用 ForEach 构建的 View 时似乎存在错误

转载 作者:行者123 更新时间:2023-12-05 04:56:09 26 4
gpt4 key购买 nike

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

有没有办法解决这个问题?当 .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()
}
}

最佳答案

.offset 修饰符不会改变 View 的布局,因此 View 的宽度保持等于一个圆的宽度,因此将 View 展平后您只会看到容器中有两个 View 。

要解决这个问题,看起来最简单的方法就是让容器全屏显示,比如

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

使用 Xcode 12.1/iOS 14.1 测试

demo

关于SwiftUI drawingGroup() 方法在应用于使用 ForEach 构建的 View 时似乎存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65039613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com