Chr*_*ger 0 macos draw nsstring
无法在 NSView ( MacOs ) 中绘制右对齐的字符串\n这是我的代码,它崩溃了:
\n-[__SwiftValue lineBreakMode]:无法识别的选择器发送到实例 0x600003408750
\nlet attrs = [NSAttributedString.Key.foregroundColor:NSColor.white,\n NSAttributedString.Key.paragraphStyle:NSTextAlignment.right\n ] as [NSAttributedString.Key : Any]\n\n let absolutPoint = NSPoint(x: 0.0, y: 0.0)\n var convertedPt = convertPoint(dataPoint:se,scaleX:scaleX,scaleY:scaleY)\n convertedPt.x = absolutPoint.x\n \n let scalaLabel = NSString(format:"%3.0f",se.y)\n\n let place = NSMakeRect(convertedPt.x, convertedPt.y, 80.0, 12.0)\n scalaLabel.draw(in:place ,withAttributes:attrs )\nRun Code Online (Sandbox Code Playgroud)\n如果我没有在attrs中设置paragraphStyle,则文本会正确绘制。但不是右对齐的。\n知道我的代码有什么\xc2\xb4s 问题吗?
\nNSAttributedString.Key.paragraphStyle:NSTextAlignment.right
Run Code Online (Sandbox Code Playgroud)
这是无效的,这就是它崩溃的原因。
该值应该是 a NSParagraphStyle,而不是文档NSTextAlignment中所述的a :
该属性的值是一个
NSParagraphStyle对象。使用此属性可将多个属性应用于一定范围的文本。如果不指定此属性,则字符串将使用 的default方法返回的默认段落属性NSParagraphStyle。
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .right
let attrs = [NSAttributedString.Key.foregroundColor:NSColor.white,
NSAttributedString.Key.paragraphStyle: paragraphStyle
] as [NSAttributedString.Key : Any]
Run Code Online (Sandbox Code Playgroud)
旁注,如果您之前声明了类型,它可能会缩短:
let attrs: NSAttributedString.Key: Any] = [foregroundColor: NSColor.white,
paragraphStyle: paragraphStyle]
Run Code Online (Sandbox Code Playgroud)