如何在 ios 图表中添加标记到中心位置,同时水平滚动并增加scaleX并启用拖动

2023-12-07

我正在使用 Daniel Cohen Gindi 的图表框架。我通过增加scaleX值并启用拖动来水平滚动图表,如这个问题的答案中所述

快速设置我的条形图的水平滚动

我想当用户水平滚动时在中心位置添加标记。我知道每当用户拖动图表时都会调用“chartTranslated”委托,但它不包含“ChartDataEntry”和“Highlighted”的值,就像“chartValueSelected”委托方法中那样。


很遗憾ChartViewBase.swift充满了私有函数和内部变量,您无法扩展某些方法或获取某些变量来获取您搜索的值。

无论如何,您始终可以改进源代码,添加您想要在内部使用的其他方法public protocol ChartViewDelegate:

ChartViewBase.swift

下线:

@objc optional func chartTranslated(_ chartView: ChartViewBase, dX: CGFloat, dY: CGFloat)

添加这个:

@objc optional func chartTranslated(_ chartView: ChartViewBase, dX: CGFloat, dY: CGFloat, entry: ChartDataEntry?, highlight: Highlight?, centerIndices:Highlight?)

然后,您可以轻松地对代码的唯一源部分调用这个新的委托方法。chartTranslated叫做:

BarLineChartViewBase.swift

搜索您看到这些行的代码部分:

if delegate !== nil
        {
            delegate?.chartTranslated?(self, dX: translation.x, dY: translation.y)
        }

并将其更改为:

if delegate !== nil
        {
            delegate?.chartTranslated?(self, dX: translation.x, dY: translation.y)
            var entry: ChartDataEntry?
            var h = self.lastHighlighted

            if h == nil
            {
                _indicesToHighlight.removeAll(keepingCapacity: false)
            }
            else
            {
                // set the indices to highlight
                entry = _data?.entryForHighlight(h!)
                if entry == nil
                {
                    h = nil
                    _indicesToHighlight.removeAll(keepingCapacity: false)
                }
                else
                {
                    _indicesToHighlight = [h!]
                }
            }
            let centerH = getHighlightByTouchPoint(self.center)
            if centerH === nil || centerH!.isEqual(self.lastHighlighted)
            {
                //self.highlightValue(nil, callDelegate: true)
                //self.lastHighlighted = nil
            }
            else
            {
                print("\n in center we have: \(centerH!)")
                self.highlightValue(centerH, callDelegate: true)
                self.lastHighlighted = centerH
                // please comment these lines if you don't want to automatic highlight the center indices.. 
            }
            delegate?.chartTranslated?(self, dX: translation.x, dY: translation.y, entry: entry, highlight: h, centerIndices:centerH) 
     }

Usage:

import Foundation
import UIKit
import Charts

class test: UIViewController, ChartViewDelegate {

    func chartTranslated(_ chartView: ChartViewBase, dX: CGFloat, dY: CGFloat, entry: ChartDataEntry?, highlight: Highlight?, centerIndices:Highlight?) {
        if let entry = entry, let highlight = highlight {
            print("chartTranslated info:\n\(self)\ndX and dY:\(dX)-\(dY)\nentry:\(entry)\nhightlight:\(highlight)")
        if let centerIndices = centerIndices {
            print("\n center indices is:\n\(centerIndices)")
        }
    }
}

现在,使用这个新的委托方法,您可以将标记标记到中心索引。

一个 gif 来展示一下:

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ios 图表中添加标记到中心位置,同时水平滚动并增加scaleX并启用拖动 的相关文章

  • 获取 iPhone 上 Spotify 中当前播放的歌曲

    访问MPMusicPlayerController systemMusicPlayer 下面的代码 适用于获取 Apple Music 应用程序中正在播放的曲目信息 但是我们有没有办法访问 Spotify 应用程序中当前播放的歌曲的信息 此
  • 如何在 SpriteKit SKScene 类中启动 ReplayKit 屏幕录制

    我已经实施了ReplayKit in my SpriteKit游戏 但由于一切都在游戏内完成GameViewController录制按钮出现得太早 请看我的GameViewController下面的类 class GameViewContr
  • SwiftUI - 显示符合协议和 ForEach 的元素的视图

    我想写一个 SwiftUI 视图我的结构列表对符合给定协议的元素数组进行操作我的协议 该示例有效 但当然我需要对数组的元素进行 ForEach 如注释行中所尝试的那样 使用 ForEach 我得到 协议类型 MyProtokoll 的值不能
  • 更改 RealityKit 中 AnchorEntity 的旋转

    我在放置对象 3 秒后将 3d 对象放置到 ARViewController 中 然后我想将对象旋转 90 度 arView scene addAnchor anchorEntity DispatchQueue main asyncAfte
  • 如何将 NSData 转换为多种类型 Int

    我通过 get NSData 获取磁力计调整寄存器 如下所示 lt 00001a1a 4f56f202 00000000 1dfd421b gt 我需要根据我访问的字节将其转换为 Int8 UInt8 Int16 UInt16 文档来源 s
  • 如何与Socket.io连接?雨燕4

    我已阅读最新文档 https github com socketio socket io client swift of Socket io对于斯威夫特 还有一个新连接的示例 let manager SocketManager socket
  • 当应用程序在前台时,如何使远程通知出现在通知中心?

    当我的应用程序在前台时 它会收到来自我的服务器的推送通知 触发我的UNNotificationServiceExtension 然后触发userNotificationCenter willPresent withCompletionHan
  • 来自 IOS Xcode 的 Azure 推送通知错误

    我觉得我是世界上第一个尝试让 iOS 快速与 Azure 配合使用的人 但没有太多帮助 我跟着这个创建 iOS 应用程序 https azure microsoft com en us documentation articles app
  • 在 iOS 11 上使用 Swift 计算或获取 wifi 强度的方法

    正在寻找一种获取或计算设备 WiFi 强度的方法 见过抓取状态栏的示例 但无法使其在 iOS 11 上工作 func getSignalStrength gt Int let application UIApplication shared
  • 错误域 = NSCocoaErrorDomain 代码 = 3840 “字符 0 周围的值无效

    嗨 我是 swift 的新手 我遇到了问题 我用 post 方法向服务器发出了请求 我得到了良好的 Json 响应 之后我用 get 方法发出了另一个请求 但我收到了这个错误 Error responseSerializationFaile
  • 比较两个图像并找出差异百分比

    我一直在尝试通过图像制作动物识别应用程序 我的方法是将所选图像与图像数组中的其他图像进行比较 并列出相似度超过 90 的所有比较 还有其他方法可以比较两个相似但不相似的图像吗 任何建议 将不胜感激 这些计算还必须运行多次迭代 因此非常需要一
  • Swift:HackerRank readLine 一个 Int 数组

    我正在玩 HackerRank 我需要从行读取整数数组的问题之一 A 1 2 3 B 1 4 7 I tried let line readLine print line 但我收到这个错误 solution swift 2 7 warnin
  • Swift 中的运行时错误处理

    我完全知道 Swift 没有 try catch 机制来捕获异常 好吧 Swift 2 0 现在支持它们 我还了解到 许多 API 方法都会返回一个 NSError 如果出现问题 该错误对象将被填充为错误对象 所以请不要向我指出这个问题 S
  • 使用 swift 准备 ForSegue 集合查看索引路径

    我没有找到任何好的例子来使用 swift 做我想做的事情 所以我允许自己问这个问题 我使用 collectionView 来显示 PFObjects 我想使用prepareForSegue 将显示的单元格数据发送到第二个控制器 此时 我正在
  • 取消所有操作+AFNetworking 3.0

    我创建了一个继承自 AFURLSessionManager 的 HTTPServiceProvider 类 添加以下代码来获取数据 let configuration NSURLSessionConfiguration defaultSes
  • UIDocumentInteractionController 显示空白 pdf

    我尝试使用 UIDocumentInteractionController PresentPreviewAnimated 方法在 iOS 设备上显示 pdf 但它一直显示空白文档 我认为这可能与字符编码有关 但我不确定 如果我使用 UIWe
  • 为什么 Obj-C 属性默认所有权“分配”而不是“强”

    我正在向旧项目添加 Swift 类 一切进展顺利 直到我尝试向 Swift 类添加属性 生成的标头无法编译 我认为问题是 在生成的代码中 Swift 省略了strong所有权并仅将其声明为nonatomic 这通常应该足够了 因为 prop
  • 如何将渐变应用于 iOS Swift 应用程序的背景视图

    我正在尝试应用渐变作为视图 故事板的主视图 的背景颜色 代码运行 但没有任何变化 我正在使用 xCode Beta 2 和 Swift 这是代码 class Colors let colorTop UIColor red 192 0 255
  • 从数组中获取随机字符串[重复]

    这个问题在这里已经有答案了 我试图从数组 firstArray 中获取随机字符串并将其打印在 UILabel label 中 我似乎无法弄清楚并且出现错误 感谢您的帮助 我尝试搜索但找不到任何最新的教程 方法 import UIKit cl
  • 如何在 SwiftUI 中将阴影应用于内部视图?

    我在周围添加了阴影VStack其中包含我的两个文本字段和一个提交按钮 然而 阴影也被应用到了文本框内的两个文本字段 VStack 我在这里缺少什么导致这种情况发生吗 我尝试添加shadow radius 0 在文本字段上 但它不会改变任何内

随机推荐

  • jBoss 4.0.2 多次部署相同的 WAR 会导致 jBoss 由于 PermGem/Out-of-Memory 错误而崩溃

    我开发 Web 应用程序并使用 jBoss 4 0 2 当我使用 eclipse 多次重新部署 WAR 时 jBoss 将崩溃 因为它耗尽了内存 当我必须将新版本安装到生产环境时 它将消耗生产服务器内存 这意味着我必须停止 jBoss 以防
  • 在 R 中打开 .bcp 文件

    我一直在尝试将 bcp 文件格式的英国慈善委员会数据转换为 csv 文件格式 然后可以将其读入 R 中 我所指的数据可在此处获取 http data charitycommission gov uk 我想做的是将这些 bcp 文件转换为可用
  • System.TypeAccessException:尝试通过方法“X”访问类型“Y”失败

    好吧 我已经用谷歌搜索了近两天 并且尝试了几乎所有与此错误相关的解决方案 但没有任何效果 大多数问题都是关于 Click once 应用程序 JSON Web 应用程序等的安全设置 但对于普通的旧 winforms 应用程序来说却没有任何问
  • 如何从字符串中删除所有双空格

    我试图从字符串中删除所有双空格 以便只保留单个空格 while doublespace 1 kstring replace doublespace 1 doublespace kstring find first of 它找到第一个双空格
  • 如何将项目数组移动/旋转到 JavaScript 数组中的特定索引?

    我有一个 jQuery 元素 图像 集合 var images img 我想更改集合 使其从特定索引开始 并将前面的项目附加到末尾 有点像Rolodex 如果需要的话 我还可以将它们转换为数组 使用 JavaScript 数组的示例 var
  • 使用 ColdFusion 中的列表调用 .NET 方法时未找到方法

    对于某些背景 这与将 IEnumerable 变量从 ColdFusion 传递到 NET 我已将代码更改为使用列表 并取得了进展 但在使用 NET 和 ColdFusion 的简单数据类型以外的任何内容时 仍然遇到障碍 这是当前的问题 首
  • 是否可以从全局或设备函数调用 CUDA CUBLAS 函数

    我正在尝试并行化现有应用程序 我已将大部分应用程序并行化并在 GPU 上运行 但我在将一个函数迁移到 GPU 时遇到问题 该函数使用 blas 库的函数 dtrsv 见下文 void dtrsv call N double B double
  • 在运行时使用 ref 参数创建 C# 委托类型

    我需要创建一个委托类型ref运行时参数 如果我在编译时知道参数类型 我可以使用显式委托类型声明 例如 S is some struct value type e g int or Guid delegate void VoidDelSRef
  • Kendo UI Angular:(SystemJS) 意外标记 <

    我在使用 IIS 的 ASP NET Core 解决方案上使用 VS2015 RC3 Angular2 2 0 0 每当我尝试添加新的 UI 模块 例如下拉列表或输入 时 我都会收到 SystemJS 错误 但奇怪的是我的按钮可以正常工作
  • 使用 VBA 更新 Excel 切片器选择的性能较差

    我正在使用 VBA 模拟单击 Excel 切片器 但遇到了严重的性能问题 用户单击 X 轴上带有日期的柱形图 单击某列时 会在包含日期列表的切片器中选择相应的日期 该列表将随着时间的推移而不断增长 据我所知 为非 OLAP 数据源 我的情况
  • 带圆角的矩形旋转器

    我正在尝试制作加载程序 它看起来像这样 CodePen 但我需要有圆形边框和矩形 而不是盒子 这样我就可以将我们公司的标志放置到装载机上 我尝试再制作一层 这将制作内联半径和包装器 我设置border radius and overflow
  • 将 Datagridview 值更新到数据库中

    我正在开发一个表单应用程序 用户可以从数据库获取表数据 进入可编辑的 gridviewcontrol 以便用户可以更新网格中的一些数据 当用户单击表单上的更新按钮时 更新的数据网格值应该在数据库中更新 用户可以一次更新更多列值 我第一次在数
  • MySQL 错误 1060:重复的列名 ALTER TABLE

    由于我没有创建的代码中的错误 我在查询时遇到了一些问题 query this gt db gt query ALTER TABLE DB PREFIX customer ADD customer type TINYINT 1 NOT NUL
  • Django时区感知DateTimeField默认值时区感知错误

    我正在尝试将 DateTimeField 添加到我的 django 模型中 并以最大时间戳作为默认值 我已经弄清楚 Django 中的最大时间戳是 9999 12 31 23 59 59 与我的 postgres 数据库中使用的最大时间戳不
  • 内存通常比磁盘快多少?

    IDE SCSI SSD SATA 或所有这些 我很惊讶 本文中间的图3 大数据的病理学 表示进行顺序访问时内存仅快 6 倍左右 内存为 350 Mvalues sec 而磁盘为 58 Mvalues sec 但当您进行随机访问时 速度大约
  • std::enable_if 如何工作?

    我刚刚问了这个问题 std numeric limits 作为条件 我明白用法在哪里std enable if将有条件地定义方法的返回类型 导致该方法无法编译 template
  • 按 Column.DisplayMember 对 DataGridView 进行排序

    我有一个DataGridView有几个DataGridViewComboBoxColumn实际值与 ID 相关联 但DisplayMember是查找表中的字符串对应项 我试图做到这一点 以便当我按该列排序时 排序是根据DisplayMemb
  • 适用于 SUN Solaris 和 linux 的 awk + ​​fit 语法

    需要以下方面的帮助 当我在 Linux 上运行以下命令时 它运行良好 awk v NAME MACHINE 1 NAME etc hosts 但在 SUN Solaris 上我得到以下信息 awk v NAME MACHINE 1 NAME
  • 使用 Spring 依赖注入的自定义转换器

    有没有一种方法可以在 Dozer 中定义自定义转换器 用于将一种顶级类型转换为另一种顶级类型 而另一种类型本身就是一个 Spring bean 因此可以注入其依赖项 dozer 文档建议添加以下 XML 定义
  • 如何在 ios 图表中添加标记到中心位置,同时水平滚动并增加scaleX并启用拖动

    我正在使用 Daniel Cohen Gindi 的图表框架 我通过增加scaleX值并启用拖动来水平滚动图表 如这个问题的答案中所述 快速设置我的条形图的水平滚动 我想当用户水平滚动时在中心位置添加标记 我知道每当用户拖动图表时都会调用