gpt4 book ai didi

ios - 如何在 UIView 上正确设置围绕圆的对象

转载 作者:IT王子 更新时间:2023-10-29 05:26:35 27 4
gpt4 key购买 nike

我已经编写了一些代码来围绕位于自定义 View 中心的圆圈放置对象,但它并没有完全围绕圆圈。我不知道代码哪里错了。

enter image description here

代码如下:

func createObjectsAroundCircle() {

let center = CGPointMake(bounds.width/2 ,bounds.height/2)
let radius : CGFloat = 100
let count = 20

var angle = CGFloat(2 * M_PI)
let step = CGFloat(2 * M_PI) / CGFloat(count)

let circlePath = UIBezierPath(arcCenter: center, radius: radius, startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true)

let shapeLayer = CAShapeLayer()
shapeLayer.path = circlePath.CGPath

shapeLayer.fillColor = UIColor.clearColor().CGColor
shapeLayer.strokeColor = UIColor.redColor().CGColor
shapeLayer.lineWidth = 3.0

self.layer.addSublayer(shapeLayer)

// set objects around circle
for var index = 0; index < count ; index++ {
let x = cos(angle) * radius + center.x
let y = sin(angle) * radius + center.y

let label = UILabel()
label.text = "\(index)"
label.frame.origin.x = x
label.frame.origin.y = y
label.font = UIFont(name: "Arial", size: 20)
label.textColor = UIColor.blackColor()
label.sizeToFit()

self.addSubview(label)
angle += step
}
}

最佳答案

您的代码运行正常,只是计算逻辑错误。您应该尝试设置 label.center 而不是 label.frame.origin,或者

let label = UILabel()
label.text = "\(index)"
label.font = UIFont(name: "Arial", size: 20)
label.textColor = UIColor.blackColor()
label.sizeToFit()
label.frame.origin.x = x - label.frame.midX
label.frame.origin.y = y - label.frame.midY

请记住在更改框架或设置标签的 center 之前使用 sizeToFit()。祝你好运!

关于ios - 如何在 UIView 上正确设置围绕圆的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35123856/

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