将CATextLayer插入UIBezierPath内并旋转

在以下示例中,我尝试在CATextLayer内插入UIBezierPath并将其旋转-45度。

class DiagonalView: UIView {

    override func draw(_ rect: CGRect) {
        let path = UIBezierPath()
        path.move(to: .init(x: rect.maxX,y: rect.midY + (rect.midY / 2.5)))
        path.addLine(to: .init(x: rect.midX + (rect.midX / 2.5),y: rect.maxY))
        path.addLine(to: .init(x: rect.midX - (rect.midX / 10.5),y: rect.maxY))
        path.addLine(to: .init(x: rect.maxX,y: rect.midY - (rect.midY / 10.5)))

        let shapelayer = CAShapelayer()
        shapelayer.path = path.cgPath
        shapelayer.fillColor = UIColor.black.cgColor
        layer.addSublayer(shapelayer)

        let textlayer = CATextLayer.init()
        textlayer.string = "iPhone X"
        textlayer.fontSize = 12
        textlayer.isWrapped = true
        textlayer.foregroundColor = UIColor.white.cgColor
        textlayer.frame = path.bounds
        let degrees = -45.0
        let radians = CGFloat(degrees * Double.pi / 180)
        textlayer.transform = CATransform3DMakeTranslation(10,50,0)
        textlayer.transform = CATransform3DMakeRotation(radians,0.0,0.5,1.0)
        layer.addSublayer(textlayer)
    }

}


let containerView = DiagonalView(frame: CGRect(x: 0.0,y: 0.0,width: 140.0,height: 140.0))
containerView.backgroundColor = .red
PlaygroundPage.current.liveView = containerView

虽然实际上不是我期望的结果

结果

将CATextLayer插入UIBezierPath内并旋转

预期

将CATextLayer插入UIBezierPath内并旋转

我可能会对代码犯什么错误有任何想法? 非常感谢您的宝贵时间!

iCMS 回答:将CATextLayer插入UIBezierPath内并旋转

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2193811.html

大家都在问