我正在尝试将我的旧程序之一用于新的 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)
| 归档时间: |
|
| 查看次数: |
449 次 |
| 最近记录: |