【问题标题】:Swift: Arc shaped buttons and other shapesSwift:弧形按钮和其他形状
【发布时间】:2020-08-18 23:26:36
【问题描述】:

我一直在做有关贝塞尔路径的教程,但我对可定制性和按钮有疑问。 据我了解,您的按钮需要一个矩形框架,但我想要实现的是弧形按钮,就像我用 Sketch 制作的这张图片一样。 我希望每个弧形部分都是一个按钮,但显然如果每个弧形部分都被框在一个矩形中,那将是不可能的......

我怎样才能做到这一点? 我按照 Ray Wenderlich 教程(这里:https://www.raywenderlich.com/8003281-core-graphics-tutorial-getting-started)设法制作了一条弧线,但我想像我的图片一样细分我的弧线,并将所有这些作为单独的按钮。

谢谢!

【问题讨论】:

  • 您展示的形状是“何时不使用贝塞尔曲线”的完美示例,无论出于何种原因,您不只是使用一个圆,切出另一个圆,还有一些旋转白条?因为如果您使用普通的简单基元,这对于命中检测来说几乎是微不足道的形状。 (检查 r1 和 r2 之间的命中是否相对于中心,如果是,则使用 atan2(dy,xy) 获取角度,并查看表示您在哪个段。完成)
  • @Mike'Pomax'Kamermans 我对 Swift 很陌生,所以原因很简单,因为我缺乏经验,我还不知道解决这个问题的最佳方法。我会尝试找到关于命中检测的 tuts,(特别是因为每个弧将是不同的颜色并且命中的会稍微大一点),但是如果你对处理那些你正在谈论的原始形状有任何建议我'我全力以赴学习!谢谢
  • 我不确定您还需要在已链接到的教程中添加什么。如果您已经根据中心的角度绘制弧线,则命中检测是相同的:检查触摸发生的位置作为中心的极坐标(您可以使用atan2 函数,它与@ 一样通用987654326@ 或cos),如果角度是您将事物着色为红色的角度,并且如果幅度(“长度”)介于内半径和外半径之间,则按下按钮。记得展示你的代码,这样人们就可以在你已经编写的内容的基础上发表评论。

标签: ios swift button shapes bezier


【解决方案1】:

对于每个按钮,您覆盖 hitTest 以检查点击位置是否在形状内。

【讨论】:

【解决方案2】:

我会为这样的事情使用 PureSwiftUI,为此添加贝塞尔路径应该很容易。这是一个关于扩展的教程,你可以从中创建非常棒的形状。

下面是关于使用 PureSwiftUI 扩展的贝塞尔路径的教程

https://www.youtube.com/watch?v=KZtCMg7q2m8

【讨论】:

  • 没听说过,感谢视频的链接非常有用;会努力的!
猜你喜欢
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 2016-08-23
  • 2021-01-23
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多