ios - 类似于折线图的 Swift 动画
问题描述
我的问题可能有点令人困惑,但我会尽力解释它。所以我需要在图像中创建一个如下图所示的视图,它看起来像一个折线图。
换句话说,线拇指应该是交互式的,以便用户可以上下移动它们,这将导致每对之间的“绳索”移动。问题是我无法弄清楚在 swift 中启动什么样的结构以便我可以创建这个视图。到目前为止,我正在考虑创建单独的滑块并通过在它们之间绘制线条来连接它们,但我认为应该有一些更好的解决方案。感谢任何帮助、想法、建议或提示。提前致谢。
解决方案
第 1 部分。学习在 UIView 中使用“drawRect”
制作自定义视图,即 UIView 的子类。要绘制九个有角度的线段(实际上是后面的网格),您需要掌握核心图形。幸运的是,有很多关于这个主题的 QA:
第 2 部分. UIView 中的自定义层
您必须了解如何将自定义 CALayers 添加到视图。有很多这样的例子,例如
https://stackoverflow.com/a/57465440/294884
https://stackoverflow.com/a/41553784/294884
(请注意,对于小文本标签,我可能会简单地以编程方式添加许多 UILabel,您还需要了解这些内容。)
第 3 部分。使用 UISlider
为每个红点使用 UISlider 确实没有错。如果您刚刚开始使用 iOS,我建议您先尝试熟悉它。
一个方便的提示是,只需使用水平堆栈视图来保存它们 - 你可以随意放置它们。
第 4 部分。使用手势
超越 UISlider。红色按钮很可能是自定义 UIViews。而且,最简单的是,您将使用它UIPanGestureRecognizer
来检测手指的移动。
同样,您可以在该研究领域找到许多 QA,例如使用 pangesture 在父视图中移动 UIView
如果你掌握了这四个一般领域,你将能够实现有问题的观点,祝你好运!
推荐阅读
- python - 检查用户输入的 IP 地址是否有效
- flutter - 如何知道流是否已更改(已添加某些内容)
- xml - 需要用值中的空格替换下划线
- material-ui - 如何仅导入组件的类?
- python - 如何在 Python 中使用 tqdm 打印单行进度条?
- while-loop - 如何打印存储在缓冲区中的消息?
- javascript - 将自定义 CSS 添加到导航选项卡向导
- laravel - 使用 laravel 集合将键转换为项目
- python - 不同的日志:local VS docker (local) vs docker SWARM
- python - 根据 PyCharm 暗/亮模式的暗/亮 matplotlib 样式