【问题标题】:Showing circle only for selected/highlighted value仅针对选定/突出显示的值显示圆圈
【发布时间】:2021-03-02 07:01:56
【问题描述】:

我到处寻找这个,但无法找到任何解决方案或任何关于如何实现这一目标的提示。我只想为选定/突出显示的点绘制一个指示器(圆圈)。现在我有

dataSet.drawCircleHoleEnabled = false
dataSet.drawCirclesEnabled = false

所以我的折线图看起来很简单,但是当我开始拖动查找器并看到高亮指示器时,我还希望看到一个圆圈显示数据输入。 我想要看起来像这样的东西:

到目前为止,我唯一想到的就是创建另一个数据集并使用委托动态配置它,但对于如此常见的事情来说,这似乎有点矫枉过正。

【问题讨论】:

    标签: ios swift ios-charts


    【解决方案1】:

    您需要创建一个自定义标记

    class CircleMarker: MarkerImage {
        
        @objc var color: UIColor
        @objc var radius: CGFloat = 4
        
        @objc public init(color: UIColor) {
            self.color = color
            super.init()
        }
        
        override func draw(context: CGContext, point: CGPoint) {
            let circleRect = CGRect(x: point.x - radius, y: point.y - radius, width: radius * 2, height: radius * 2)
            context.setFillColor(color.cgColor)
            context.fillEllipse(in: circleRect)
            
            context.restoreGState()
        }
    }
    

    并使用它

    let marker = CircleMarker(color: .red)
    chart.marker = marker
    

    基于BallonMarker

    【讨论】:

    • 我想知道为什么用@objc描述变量。如果您使用动态调度或其他方式来实现,我可以了解它的目标吗?
    • 这个答案是基于库演示中的 BallonMarker.swift ,该演示在 obj-c 和 swift 中有代码,所以它需要 @objc 让 obj-c 类访问这个 swift 类中的属性
    • 感谢@aiwiguna,所以当您必须使用从 swift 到 Objective-c 的变量时,这是描述 objc 标志的必要条件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 2016-10-07
    • 2022-08-19
    • 1970-01-01
    • 2017-08-22
    相关资源
    最近更新 更多