如何在CAShapeLayer中添加标签或文本

rol*_*JKS 8 calayer cashapelayer core-text ios swift

这是我的课,它会画一个圆圈,它看起来像这样:

在此输入图像描述

    class OvalLayer: CAShapeLayer {

    let animationDuration: CFTimeInterval = 0.3

    override init() {
        super.init()
        fillColor = Colors.green.CGColor
        path = ovalPathSmall.CGPath
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }


    var ovalPathStart: UIBezierPath {
        let path = UIBezierPath(ovalInRect: CGRect(x: 0.0, y: 0.0, width: 100.0, height: 100.0))

        return path
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我需要在这个圈子的中间添加一个文本,我试图在谷歌上找到它,但没有任何工作正常.我不确定是否可能,如果有可能,有人可以帮助我吗?

arr*_*eme 6

我想你应该添加CATextLayer作为子图层CALayer...这样做很好:尝试CAShapeLayer先添加,然后CATextLayer(到同一个CALayer父图层),例如按以下顺序...

// assume self - is UIView instance

self.layer.addSublayer(shapedLayer) // shapedLayer - CAShapeLayer instance
self.layer.addSublayer(textLayer) // textLayer - CATextLayer instance
Run Code Online (Sandbox Code Playgroud)


MrR*_*ads 6

斯威夫特3.0

let label = UILabel()
label.font = UIFont(name: "Helvetica-Bold", size: 12)
label.frame = CGRect(x: OvalLayer.frame.origin.x + (circleWidth/2), y: OvalLayer.frame.origin.y, width: OvalLayer.bounds.width, height: OvalLayer.bounds.height)
label.text = "Hello"
label.textColor = UIColor.red
label.isHidden = false

OvalLayer.addSublayer(label.layer)
Run Code Online (Sandbox Code Playgroud)

  • 这是行不通的。文本永远不会出现(Swift 4 / XCode 9) (8认同)