Как нарисовать строку в CGContext? - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь нарисовать строку в переопределенном 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, но мне нужно нарисовать строку напрямую.Как вы должны нарисовать строку в CGContext в эпоху Swift 4?Никакое количество нетто-поиска не дало ответа.

1 Ответ

0 голосов
/ 18 октября 2018

Я предполагаю, что вы знаете все остальные настройки.Ключевым моментом здесь является то, что вы не сделали CGContext текущим.Просто добавьте две строки кода, чтобы решить проблему.Надеюсь, вы получите ответ.

   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()
}
...