ios - 如何在 Swift 中正确旋转 CATextLayer?

标签 ios swift catransform3d 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, 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)
}

但是,结果如下所示:

enter image description here

我的期望与此类似: enter image description here

最佳答案

通过在函数外部添加 textLayer 属性解决了这个问题。

var textLayer = CATextLayer()

关于ios - 如何在 Swift 中正确旋转 CATextLayer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58686585/

相关文章:

android - 在 xamarin 中使用新的 .NET 执行环境

swift - 使用 Xcode/Swift,如何使用 SF Symbol 作为 Assets 中的标签栏图标? asset 字段不接受 .svg 文件

ios - 调用计时器以快速更新路径

arrays - 过滤字典数组

ios - 使用平移手势识别器获得平滑旋转

ios - 将更改上传到解析 PFUser 对象不起作用

ios - 如何像在 Apple 的日历应用程序中那样在导航栏 (iOS 7) 中显示/隐藏搜索栏?

ios - 如何独立于标签栏项目标题更改uiviewcontroller标题

swift3 - CATransform3D 关键路径与#keyPath

ios - 为什么 CALayer 的 "transform.scale"值与其变换比例不匹配?