如何在Swift中正确旋转CATextLayer?

我目前面临一个问题,即旋转CATextLayer时,帧大小将同时意外地转换。我希望文本可以旋转一定角度而无需更改其框架大小。如果有人可以启发我,请先谢谢。

我尝试过的事情:

var someAngle: CGFloat = 0 {
    didSet {
        drawText()
    }
}

func drawText() {

    for layer in someView.layer.sublayers ?? [] where layer is CATextLayer {
        layer.removeFromSuperlayer()
    }

    let textLayer = CATextLayer()
    textLayer.fontSize = 26
    textLayer.backgroundColor = UIColor.lightGray.cgColor
    textLayer.string = "Hello world"
    textLayer.alignmentMode = .center

    textLayer.anchorPoint = CGPoint(x: 0.5,y: 0.5)
    textLayer.transform = CATransform3DMakeRotation(someAngle,0.0,1.0)

    let textSize = calculateTextSize(text: "Hello world",font: UIFont.systemFont(ofSize: 26))
    let origin = CGPoint(x: someView.bounds.midX - textSize.width/2,y: someView.bounds.midY - textSize.height/2)
    textLayer.frame = CGRect(origin: origin,size: textSize)

    someView.layer.addSublayer(textLayer)
}

但是,结果看起来像这样:

如何在Swift中正确旋转CATextLayer?

我的期望与此相似:

如何在Swift中正确旋转CATextLayer?

songxiayehu 回答:如何在Swift中正确旋转CATextLayer?

通过在函数外部添加textLayer属性来解决此问题。

var textLayer = CATextLayer()
本文链接:https://www.f2er.com/3169346.html

大家都在问