web-dev-qa-db-ja.com

CGContextで文字列を描画する方法は?

drawのオーバーライドされたCALayerメソッドで文字列を描画しようとしています(iOS用にプログラミングしています)。

override func draw(in ctx: CGContext) {
    let font = UIFont.systemFont(ofSize: 30)
    let string = NSAttributedString(string: "23", attributes: [NSAttributedStringKey.font: font])
    string.draw(at: CGPoint(x: 200, y: 200))
}

ただし、これは何も描画していません(少なくとも何も表示されていません)。塗りと線の色を変更しても違いはありません。

線を引くと表示されるので、関数が呼び出されています。 CATextLayerがあることは知っていますが、文字列を直接描画する必要があります。 Swift 4時代のCGContextに文字列をどのように描くことになっていますか?ネット検索の量は答えをもたらしませんでした。

6
Melodius

私はあなたが他のすべての設定を知っていると思います。ここで重要なのは、CGContextを現在のものとして作成していないことです。問題を解決するには、2行のコードを追加するだけです。あなたが答えを得ることを願っています。

   override func draw(in ctx: CGContext) {
   UIGraphicsPushContext(ctx)
    let font = UIFont.systemFont(ofSize: 30)
    let string = NSAttributedString(string: "23", attributes: [NSAttributedString.Key.font: font])
    string.draw(at: CGPoint(x: 200, y: 200))
   UIGraphicsPopContext()
}
1
E.Coms