swift - 构建圆形金字塔 - SwiftUI
问题描述
我正在寻找使用 SpriteKit 和 SwiftUI 绘制圆形金字塔,如下图所示
o
o o
o o o
我正在使用下面的一组循环来尝试生成它们,但是我遇到了两个问题。首先,我希望它以相反的方式出现,在我的脑海中它是颠倒的。
我还想在每个圆圈之间添加特定的间距,而不是让它们接触每个级别;因此,顶部的间隔变量。
let spacer: Int = 40
for i in 0...7 {
for j in 0...i {
let x = Int(W) - ((i * radius) + radius) + (j * diameter)
let y = ((i * radius * 2) - radius) + side
addNode(posX: Double(x), posY: Double(y))
}
}
- addNode(posX, posY) 只是在提供的两个坐标处创建一个圆圈
有人对如何修复公式有任何想法吗?
解决方案
这是您正在尝试的示例,但我没有使用精灵!
struct ContentView: View {
@State private var heightOfPyramid: Int = 3
@State private var spacing: CGFloat = 10.0
@State private var sizeOfCircle: CGFloat = 25.0
var body: some View {
Spacer()
VStack(spacing: spacing) {
ForEach(0...heightOfPyramid, id:\.self) { outSideIndex in
HStack(spacing: spacing) {
ForEach(0..<outSideIndex, id:\.self) { index in
Circle()
.frame(width: sizeOfCircle, height: sizeOfCircle)
}
}
}
}
.animation(Animation.interactiveSpring(), value: heightOfPyramid)
.shadow(radius: 10.0)
Spacer()
VStack {
HStack {
Text("heightOfPyramid:")
Slider(value: Binding(get: { return Double(heightOfPyramid) }, set: { newValue in heightOfPyramid = Int(newValue) }), in: 0.0...10.0)
}
HStack {
Text("sizeOfCircle:")
Slider(value: $sizeOfCircle, in: 0.0...50.0)
}
HStack {
Text("spacing:")
Slider(value: $spacing, in: 0.0...50.0)
}
}
.padding()
}
}
推荐阅读
- rabbitmq - Prometheus 查询比较具有相同标签集的不同指标
- c++ - 我的函数调用中不允许不完整的类型
- flutter - 分页滚动控制器 ScrollPhysics
- php - 我正在使用带有 yajaratable 的 laravel 7,当在刀片文件中传递路由时,我在路由中缺少参数
- ios - hidesBottomBarWhenPushed 不能快速工作
- c++ - x86_64-linux-musl-g++: 致命错误: 无法执行 'cc1plus': execvp: No such file or directory, on alpine container
- javascript - 在文件中导入多个反应组件而不产生性能问题的最佳方法是什么?
- typescript - GraphQL 查询结果中的类型不存在属性
- c# - Activator.CreateInstance(assemblyType) 使用 c# 返回 null
- airflow - 气流任务流 - 并行运行任务