macOS下Charts库MarkerView无法显示的问题求助
macOS下DanielGindi/Charts库MarkerView无法显示的问题求助
在macOS项目中使用DanielGindi/Charts库时,遇到MarkerView无法正常显示的问题:将iOS示例中的RadarMarkerView移植到macOS的RadarDemoViewController后,点击图表数值时标记从未出现。
以下是RadarMarkerViewMac的完整实现:
public class RadarMarkerViewMac: MarkerView { @IBOutlet var label: NSTextField! public override func awakeFromNib() { self.offset.x = -self.frame.size.width / 2.0 self.offset.y = -self.frame.size.height - 7.0 } public override func refreshContent(entry: ChartDataEntry, highlight: Highlight) { label.stringValue = String.init(format: "%.3f %%%", (entry.y)) _ = self // 用于断点调试,查看self是否正确绘制 layout() // 替换iOS版的layoutIfNeeded(),因NSView无该方法 } }
与原iOS版RadarMarkerView相比,仅做了两处改动:
- 将
layoutIfNeeded()改为layout(),因为NSView中不存在前者 - 添加
_ = self代码用于断点调试,确认self的绘制状态
出现了一个奇怪的现象:点击图表仅会高亮选中值,标记完全不显示;但在layout()行设置断点并通过预览弹窗查看self后,继续运行应用,后续所有选择操作中标记都能正常显示,即使禁用断点也是如此。若仅设置断点但不预览self,标记仍无法显示。
推测该问题与NSView的渲染机制有关,但尚未找到解决方法,恳请协助排查。
内容的提问来源于stack exchange,提问作者RL2000
相关产品推荐
相关产品推荐

