Mac OS X - SwiftUI - 如何将字符串(文本)与一些路径一起绘制

Ski*_*r52 6 swiftui

我正在尝试将我的旧程序之一用于新的 SwitUI。我找不到在图表上绘制文本的方法。下面的示例显示两条线(实际上它将是某种显示实时电压变化的示波器)。为了保持故事简短。下面的片段画了两条线,然后我想在上面加上一些描述“标签”。

线条绘制正确,但无法获得任何文本。UIGraphics 在 Mac OS 应用程序上不可用。在过去的三天里,我在谷歌上搜索了很多。没有成功:-(

import SwiftUI
import CoreGraphics

struct ContentView: View {
    var body: some View {
    VStack{
        printText(graphWidth: 1.0, amplitude: 0.4).stroke()
        }
    }
}


struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
    ContentView()
    }
}

struct printText: Shape {
    let graphWidth: CGFloat
    let amplitude: CGFloat

func path(in rect: CGRect) -> Path {

    var path = Path()
    path.move(to: CGPoint(x: 100, y: 200))
    path.addLine(to: CGPoint(x: 200, y: 200))
    path.addLine(to: CGPoint(x: 200, y: 300))

    let font = NSFont(name: "Helvetica", size: 24.0)
        let fontAttributes = [NSAttributedString.Key.font: font]
        let attrString = NSMutableAttributedString(string: "TeSt1", attributes: fontAttributes as [NSAttributedString.Key : Any])

                  attrString.addAttribute(NSAttributedString.Key.foregroundColor,
                    value: NSColor.red, range: NSRange(location: 0, length: 5)) 

        print(attrString)

        attrString.draw(at: CGPoint(x: 100, y: 100))
        attrString.draw(at: NSPoint(x: 100, y: 200))

        print("rect Dimensions   W: \(rect.width),   H: \(rect.height)")
        attrString.draw(in: rect)
return path
    }
}
Run Code Online (Sandbox Code Playgroud)