如何解决如何快速排列曲线上的对象?
我创建了圆并尝试在其上放置对象 -
extension UIView {
func createObjectsAroundCircle() {
let center = CGPoint(x: -30,y: (bounds.height/2) - 100) //CGPointMake(bounds.width/2,bounds.width/2)
let radius : CGFloat = (bounds.height/2) - 100
let count = 6
var angle = CGFloat(2 * Double.pi)
let step = CGFloat( Double.pi) / CGFloat(count)
print("angle,step",angle,step)
let circlePath = UIBezierPath(arcCenter: center,radius: radius,startAngle: CGFloat(0),endAngle:CGFloat(Double.pi * 2),clockwise: true)
// let circlePath = UIBezierPath(ovalIn: CGRect(x: 0,y: 0,width: UIScreen.main.bounds.width - 100,height: UIScreen.main.bounds.height/2))
let shapeLayer = CAShapeLayer()
shapeLayer.path = circlePath.cgPath
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.strokeColor = UIColor.red.cgColor
shapeLayer.lineWidth = 3.0
self.layer.addSublayer(shapeLayer)
// set objects around circle
// for var index = 0; index < count ; index++ {
for index in 0..<count {
let x = cos(angle) * radius + center.x
let y = sin(angle) * radius + center.y
print("x position,y position",x,y)
let label = UILabel()
label.text = "\(index)"
label.textAlignment = .center
label.frame.size.width = 40
label.frame.size.height = 40
label.font = UIFont(name: "Arial",size: 20)
label.textColor = UIColor.black
label.backgroundColor = .red
label.layer.cornerRadius = label.frame.size.height / 2
label.layer.masksToBounds = true
// label.sizeToFit()
label.frame.origin.x = x - label.frame.midX
label.frame.origin.y = y - label.frame.midY
self.addSubview(label)
angle += step
}
}
}
我正在寻找的是 -
上面缺少一些角度部分。或者任何其他方式来实现相同的目标?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。