MacOS 中的 Charts MarkerView 不会显示

问题描述 投票:0回答:0

这个问题参考了 DanielGindi/Charts,但我认为即使您不熟悉

NSView
库,一些
Charts
渲染的知识也可能有所帮助。

我在 MacOS 项目中使用

Charts
,但无法正确显示
MarkerView
。我已经将
RadarMarkerView
从 ChartsDemo-iOS 项目复制到 ChartsDemo-macOS 以便在 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 // see note 2
    layout() // see note 1
  }
}

如果您查看原始的 RadarMarkerView,就会看到只有两个显着变化:

  1. layoutIfNeeded()
    更改为
    layout()
    因为前一个函数在
    NSView
    中不存在。
  2. 我把这条线放在那里,这样我就可以添加一个断点来查看
    self
    是否被正确绘制(当断点暂停时,将鼠标悬停在
    self
    上,然后单击眼球按钮以查看视图)。

我发现的奇怪的事情是:点击图表突出显示所选值但不显示标记。但是,当我在

layout()
行上放置断点,然后使用预览弹出窗口查看
self
时,我看到的视图很好......然后一旦我继续运行应用程序,标记就会出现在所有后续选择中的图表,即使禁用了断点。

我认为还需要注意的是,如果我放置断点并且没有显示预览,则标记不会显示在图表上。

我假设这与

NSView
渲染有关,但我无法使应用程序在此处正确运行。你能帮忙吗?

macos nsview ios-charts
© www.soinside.com 2019 - 2024. All rights reserved.