首页 > 解决方案 > 构建圆形金字塔 - 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))
    }
}

有人对如何修复公式有任何想法吗?

标签: swiftswiftuisprite-kit

解决方案


这是您正在尝试的示例,但我没有使用精灵!

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()

    }
    
}

在此处输入图像描述


推荐阅读