SunburstDiagram 1.1.0

SunburstDiagram 1.1.0

Ludovic Landry 维护。



  • Ludovic Landry

Swift Sunburst Diagram

Swift Version License Swift Package Manager compatible CocoaPods Compatible

Sunburst diagram 是一个使用 SwiftUI 编写的库,用于轻松渲染给定对象树的图表。类似于环形图、旭日图、多层饼图。

diagram with icons only diagram with icons and text

此库需要 Swift 5.1 和 Xcode 11,一些公开 API 中的功能尚未实施(见下文)。

需求

  • iOS 13.0+ / macOS 10.15+ / tvOS 13.0+ / watchOS 6.0+
  • Xcode 11+
  • Swift 5.1+

安装

Swift 包管理器

Swift 包管理器 是一个用于自动化 Swift 代码分配的工具,并集成到 swift 编译器中。它现在集成到 Xcode 11 中。

一旦设置了 Swift 包,将 SunburstDiagram 添加为依赖项就像将其添加到 Package.swiftdependencies 值一样简单。

dependencies: [
    .package(url: "https://github.com/lludo/SwiftSunburstDiagram.git")
]

Cocoapods

CocoaPods 是 Cocoa 项目的依赖管理器。关于使用和安装说明,请访问他们的网站。要使用 Cocoapods 将 Alamofire 集成到你的 Xcode 项目中,请在 Podfile 中指定它。

pod 'SunburstDiagram', '~> 1.1.0'

手动集成

如果你不希望使用 Swift Package Manager,你可以手动将 SunburstDiagram 集成到你的项目。

功能

  • 使用节点对象的树配置
  • 节点可以显示可选的标签(图像和文本)
  • 具有动画更新的响应式 UI
  • 可选配置值并配置节点(4 种渲染模式)
  • 支持无限层(圆圈)
  • 可配置层的间隔、大小、排序和初始位置
  • 可选折叠超出特定层(以显示更多层)
  • 可选择一个节点并聚焦在一个节点上以查看更多详细信息或禁用选择
  • 显示最大环数的选项(如同你聚焦节点时移动的窗口)

使用方法

// Create your configuration model
let configuration = SunburstConfiguration(nodes: [
    Node(name: "Walking", value: 10.0, backgroundColor: .systemBlue),
    Node(name: "Restaurant", value: 30.0, backgroundColor: .systemRed, children: [
        Node(name: "Dessert", image: UIImage(named: "croissant"), value: 6.0),
        Node(name: "Dinner", image: UIImage(named: "poultry"), value: 10.0),
    ]),
    Node(name: "Transport", value: 10.0, backgroundColor: .systemPurple),
    Node(name: "Home", value: 50.0, backgroundColor: .systemTeal),
])

// Get the view controller for the SunburstView
let viewController = UIHostingController(rootView: SunburstView(configuration: configuration))

通信

如果你 发现了一个错误 或者想要讨论一个 新功能,不要犹豫给我留言。如果你 想贡献代码,所有拉取请求都总是受欢迎。谢谢!

演示应用程序

本仓库中的演示应用程序也是用 SwiftUI 编写的,可以以图形和响应式的方式体验本库的 API。

iOS demo app first screenshot iOS demo app second screenshot iOS demo app third screenshot

macOS demo app screenshot

待办事项

  • 实现最小弧百分比值选项(如果小于,则在“其他”中分组显示数据)
  • 如果没有提供节点,则计算弧颜色
  • 如果弧的总和小于100%,则添加显示未分配的选项
  • 为具有边距的弧添加圆角选项?

灵感

本项目受到了DaisyDisk UI 和 Apple SwiftUI Building Custom Views with SwiftUI WWDC2019 会话的启发。