有没有办法以圆形排列布局按钮?

Is there any way to layout buttons in circular arrangement?

我正在尝试在角落制作一个圆形按钮,当您按下它时,它周围会弹出 3 个按钮。当你按住别针时,就像 Pinterest 的菜单一样。我使用 UIBezierPath 进行了查找,但这不是我要查找的内容。我知道有 GitHub 个库,但我正在尝试从头开始。

这是我尝试从头开始制作的示例:

我想出了如何使用圆角半径制作圆形按钮。我有一个特定的功能,它将为按钮设置动画,但我不知道如何正确地让它们围成一圈。我使用了约束,但这更像是方形布局而不是圆形布局。

你说:

but I can't figure out how to properly get them in a circle.

这只是一个小三角函数,可以计算出新按钮的中心相对于现有按钮的位置。如果r是距圆心x的距离,y,圆i 的角度为 θᵢ,则 xᵢ = x + r * cos(θᵢ)yᵢ = y + r * sin(θᵢ)。 (在这种排列中,角度以弧度为单位从 3 点开始,顺时针方向进行测量,或者向负方向逆时针方向进行测量。)

例如,如果使用约束:

let r: CGFloat = 150               // let's say you want center of the circles to be 150 points away from center of existing button
let range = -CGFloat.pi / 2 ... 0  // and we want the angles to range from -π/2 to 0
let howMany = 5                    // and you want five of them

for i in 0 ..< howMany {
    let angle = range.lowerBound + CGFloat(i) / CGFloat(howMany - 1) * (range.upperBound - range.lowerBound)
    let offset = CGPoint(x: r * cos(angle), y: r * sin(angle))
    let button = ...
    button.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(button)
    NSLayoutConstraint.activate([
        button.centerXAnchor.constraint(equalTo: mainButton.centerXAnchor, constant: offset.x),
        button.centerYAnchor.constraint(equalTo: mainButton.centerYAnchor, constant: offset.y),
        button.widthAnchor.constraint(equalToConstant: 40),
        button.heightAnchor.constraint(equalToConstant: 40)
    ])
}