BRHSegmentedControl

一个 Swift 包,包含一个 SwiftUI 控件,它模仿了 SwiftUI 的分段样式 Picker。

复制了原生控件的行为

在视觉上,复制并不完全精确,但在我看来很接近。特别是:

附加功能

使用方法

只需将 brh-segment-control 包添加到您的 Package.swift 文件或通过 Xcode 添加。

  dependencies: [
    .package(url: "https://github.com/bradhowes/brh-segmented-control", from: "1.0.0"),
  ],
...
  .target(
    name: "MyView",
    dependencies: [
      .product(name: "BRHSegmentedControl", package: "brh-segmented-control")
    ]
  ),

有关如何使用的示例,请参阅 BRHSegmentedControl.swift 中的 PreviewContent 结构。 还有单元测试,它们练习 API 并显示其他示例。

默认的视图构建器方法位于 BRHSegmentedControlSupport.swift 中。 创建自定义的很容易,并且可以更好地控制分段内容。 有两个版本,一个采用一个 Int 参数,另一个采用一个 Int 和一个 String。 当您在 init 方法中提供字符串集合时,需要第二个版本。 第一个参数是要生成的分段的索引,第二个参数是 init 中给定的集合中的值。

致谢

我编写了此存储库中的所有代码,除了允许在代码中选择浅色/深色的 Color 扩展。 这来自 Jesse Squires博客文章。 在我自己的 AUv3 项目中,我首先开始使用 CustomizableSegmentedControl,作者是 Tyoma Zagoskin,但我后来决定尝试复制 Apple 的实现,所以就有了这个。 最后,这篇帖子 在 StackOverflow 上,作者是 Benzy Neez,帮助我正确地连接了 DragGesture,以处理与分段的拖动交互。 这确实是缺失的一环,它神奇地将所有东西结合在一起,让我至少可以模仿(如果不能完全复制)Apple 实现中的小细节。