ios - 设计UISegmentControl

标签 ios swift uisegmentedcontrol

我有一个像这样的段控制设计 enter image description here

如何设计我的片段,使所选片段看起来像上图中的“全部”。我可以想到在选择时使用不同的图像,但如果我这样做,那么“其他”中的曲线的某些部分将不可见。对于像这样设计 UISegmentControl 有什么建议吗?

最佳答案

我有两个建议:

  1. 找到避免这种情况的替代方法。 许多应用程序试图通过设计自定义组件和 UI 来增加乐趣,但实际上它并没有给应用程序带来太多好处。在最坏的情况下,您可能会因为使用不按预期方式工作的非标准组件而让人们感到沮丧,或者在他们尝试使用您的应用程序时增加认知负担。

  2. 100% 使用自定义子类。 不要仅仅满足于设置静态背景图像,而要投资创建一个组件,该组件不仅在选定状态下看起来像这样,而且还可以在人们更改选定项目时提供动画。

这将是一项相当大量的工作,但会是这样的:

  • 子类化UISegmentedController——它提供了您正在寻找的良好功能的基础;
  • 添加新的 CAShapeLayer 作为控件背景层
  • 找出一条可以更新所有状态的动态贝塞尔曲线(可能最终会有每个段的控制点),您可能可以手动完成此操作,但我必须使用 PaintCode 之类的工具来生成贝塞尔曲线代码,Illustrator制作初始曲线
  • 添加线段变化事件变化的监听,根据需要重新计算曲线控制点

这样做的好处是,CAShapeLayer 上的路径属性是可动画的,因此当线段发生变化且曲线更新时,动画可能是最简单的部分!

关于ios - 设计UISegmentControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41517803/

相关文章:

ios - iOS NSURLConnection字典或数组

ios - 如何更改 iOS7 中 UISegmentedControl 边框的颜色?

ios - UIButton 约束失败,但适用于 UILabel

ios - 为什么这个 NSMutableAttributedString addAttribute 只有在我使用 mutableCopy 时才有效

ios - 当我在 Swift 中从音乐库中选择一首歌曲时,为什么我的应用程序会崩溃?

ios - 使类符合 NSCoding

ios - 为什么某些功能覆盖率已经是 100% xcode 9

iphone - UISegmentedControl 没有圆角?

ios - 返回第四个 View 时分段控件颜色不显示

ios - 如何在 Swift 中为 UIImage 着色?