Я нашел хороший простой подход - но вам придется немного поиграть с координатами. Преобразование перемещает начало координат в нижний левый угол
Большая часть ответа пришла из более раннего ответа - Как повернуть текст в NSView? (Ma c OS, Cocoa, Swift) , но необходимо немного обновить.
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
let font = NSFont.boldSystemFont(ofSize: 18)
let textStyle = NSMutableParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
let textFontAttributes = [
NSAttributedString.Key.font: font,
NSAttributedString.Key.foregroundColor: NSColor.red,
NSAttributedString.Key.paragraphStyle: textStyle
]
let textRect = CGRect(x: 200, y: 200 , width: 200, height: 100)
"normal".draw(in: textRect, withAttributes: textFontAttributes)
let transf : NSAffineTransform = NSAffineTransform()
transf.rotate(byDegrees: 90)
transf.concat()
"200, -100".draw(at: NSMakePoint(200, -100), withAttributes:textFontAttributes)
"300, -50".draw(at: NSMakePoint(300, -50), withAttributes:textFontAttributes)
}
Вот мой результат