cHorse1981
cHorse1981

Reputation: 121

Draw text to UIView with CATextLayer not working

I am attempting to draw text to a UIView using CATextLayer and so far nothing is showing up. I must be missing something simple.

private func drawText(string: String, at: CGPoint, withFont: CGFont, fontColor: CGColor, fontSize: CGFloat) -> CATextLayer {
    let textLayer = CATextLayer()
    textLayer.string = string
    textLayer.font = withFont
    textLayer.fontSize = fontSize
    textLayer.alignmentMode = .center
    textLayer.contentsScale = UIScreen.main.scale
    textLayer.position = at
    return textLayer
}

Function Calls

let string = String(increment * Double(6 - i))
let textLayer = drawText(string: string, at: CGPoint(x: 30, y: CGFloat((i * 19) + 18)), withFont: someCGFont, fontColor: UIColor.black.cgColor, fontSize: 10)
    
chart.layer.addSublayer(textLayer)

Upvotes: 2

Views: 323

Answers (1)

RTXGamer
RTXGamer

Reputation: 3712

You're not setting the CALayer frame, check this test source and customize as per your requirement:

class ViewController: UIViewController {
    
    @IBOutlet weak var viewTest: UIView!
    
    private lazy var sampleLayer: CATextLayer = {
        let layer = CATextLayer()
        layer.fontSize = UIFont.systemFontSize
        layer.frame = self.viewTest.frame
        layer.string = "Test ABC"
        layer.foregroundColor = UIColor.blue.cgColor
        layer.contentsScale = UIScreen.main.scale
        layer.alignmentMode = CATextLayerAlignmentMode.left
        return layer
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.viewTest.layer.addSublayer(sampleLayer)
    }
}

Upvotes: 2

Related Questions