我有下面的视图,它绘制同心圆来填充屏幕:
struct TestView: View {
var body: some View {
ZStack {
Color.red
ForEach((0...50), id: \.self) { index in
Path { path in
var radius = CGFloat(120 + (index * 30))
let center = (x: UIScreen.main.bounds.size.width/2, y: UIScreen.main.bounds.size.height/2)
path.move(to: CGPoint(x: center.x + radius, y: center.y))
path.addArc(center: CGPoint(x: center.x, y: center.y), radius: radius, startAngle: Angle(degrees: 0), endAngle: Angle(degrees: 360), clockwise: false)
}
.stroke(Color.white, style: StrokeStyle(lineWidth: 1, lineCap: .round, lineJoin: .round, dash: [3.0]))
}
}
}
}
渲染时看起来如下所示:
我试图实现的是破折号是圆点,而不是他们的大小和间距逐渐增加,因为圆圈向外。希望达到这样的最终结果,但与圆形溢出屏幕边界,同时集中到屏幕上,也尊重安全区,目前我的圈子不是。上半部分的圆弧比下半部分多。任何帮助都是感激不尽的。
2条答案
按热度按时间htzpubme1#
我建议使用
Canvas
。然后只需将.ignoresSafeArea
涂到安全区域即可。就像这样:zsbz8rwp2#
使用
scaleEffect
,offset
,rotationEffect
和ForEach
中的参数将所有圆放置到位。要解决安全区域问题,请将
ZStack
放在忽略安全区域的GeometryReader
中: