gpt4 book ai didi

swift - CALayer 绕中心旋转

转载 作者:搜寻专家 更新时间:2023-10-31 19:31:36 25 4
gpt4 key购买 nike

我想做一些事情,比如圆形进度条,在 UIView 中绘制贝塞尔曲线路径,但它看起来旋转了 PI/2。所以我需要将它旋转 PI/2。问题是,它围绕某个非常奇怪的点旋转,我不知道如何处理它。我试着关注 these说明,但它没有帮助,因为我想围绕中心旋转它。这是我的代码:

required init(coder aDecoder: NSCoder) {
ringLayer = CAShapeLayer()
ringLayerBackground = CAShapeLayer()
super.init(coder: aDecoder)
ringLayer.lineCap = kCALineCapButt
ringLayer.fillColor = nil
ringLayerBackground.lineCap = kCALineCapButt
ringLayerBackground.fillColor = nil
ringLayerBackground.strokeColor = UIColor(white: 0.5, alpha: 0.1).CGColor
}


override func layoutSubviews() {
layer.addSublayer(ringLayer)
layer.addSublayer(ringLayerBackground)
addSubview(imageView)
let rectForRing = CGRectInset(bounds, lineWidth/2, lineWidth/2)
//ringLayer.setAffineTransform(CGAffineTransformMakeRotation(5))
ringLayer.transform = CATransform3DRotate(ringLayer.transform, CGFloat(-M_PI/20), 0.0, 0.0, 1.0)
//Tried both ways
ringLayer.path = CGPathCreateWithEllipseInRect(rectForRing, nil)
ringLayerBackground.path = CGPathCreateWithEllipseInRect(rectForRing, nil)
super.layoutSubviews()
}

Here is what I’m getting

我知道有很多类似的问题,但他们没有帮助。谢谢!

更新找到适用于 iPhone 6 的神奇数字:140

let o = 140.0
ringLayer.transform = CATransform3DTranslate(ringLayer.transform, CGFloat(o), CGFloat(o), 0)
ringLayer.transform = CATransform3DRotate(ringLayer.transform, CGFloat(-M_PI/2), 0.0, 0.0, 1.0)
ringLayer.transform = CATransform3DTranslate(ringLayer.transform, CGFloat(-o), CGFloat(-o), 0)

工作正常,但我猜不出这个数字是从哪里来的。

更新解决了。是ringLayer.position里面的东西,需要把它设置到 View 的中心。之后,我为贝塞尔路径制作了矩形,使其中心与 ringLayer.position 相同。因此代码变得复杂,@chrisco 的解决方案更适用。

最佳答案

回答您的问题,但不是您的直接问题:

var progreessLayer = CAShapeLayer()
// add layer to your view etc

var path = UIBezierPath(arcCenter: center,
radius: 100, startAngle: CGFloat(-M_PI_2),
endAngle: CGFloat(3 * M_PI_2), clockwise: true)
progreessLayer.path = path.CGPath
progreessLayer.lineWidth = 10
progreessLayer.strokeColor = UIColor.blackColor().CGColor
progreessLayer.fillColor = nil

关于swift - CALayer 绕中心旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26186553/

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