饼图 0.0.7

饼图 0.0.7

测试已测试
语言语言 SwiftSwift
许可证 Apache-2.0
发布最后发布2018年10月
SPM支持 SPM

Ivan Schuetz 维护。



饼图 0.0.7

  • Ivan Schuetz

饼图

Version Carthage compatible License

适用于 iOS 的易于使用和高度可定制的饼图库

Swift 4.2, iOS 8+

视频

ScreenShotScreenShot

功能

  • 可定制的切片
  • 使用简单的 UIView 添加叠加层
  • 交互式
  • 动画
  • 动态插入切片
  • 通过可扩展图层系统重用组件
  • 支持在 Interface Builder 中配置
  • 图例。这是在单独的项目中以保持内容专注和可重用为目的。

安装

CocoaPods

添加到您的 Podfile

use_frameworks!
pod 'PieCharts'

Carthage

添加到您的Cartfile中

github "i-schuetz/PieCharts"

使用方法

基本图表

@IBOutlet weak var chartView: PieChart!

chartView.models = [
    PieSliceModel(value: 2.1, color: UIColor.yellow),
    PieSliceModel(value: 3, color: UIColor.blue),
    PieSliceModel(value: 1, color: UIColor.green)
]

可在界面构建器中配置,并实时更新视图

ScreenShot

叠加层

叠加层通过层实现。存在多个内置层,并可以自定义层。

要添加文本,例如在切片内添加文本标签和外部带有线条的文本,请根据以下步骤操作:

chartView.layers = [PiePlainTextLayer(), PieLineTextLayer()]

每个层都有自己定制的选项。例如,在此处我们自定义了纯文本层

let textLayerSettings = PiePlainTextLayerSettings()
textLayerSettings.viewRadius = 55
textLayerSettings.hideOnOverflow = true
textLayerSettings.label.font = UIFont.systemFont(ofSize: 8)

let formatter = NumberFormatter()
formatter.maximumFractionDigits = 1
textLayerSettings.label.textGenerator = {slice in
    return formatter.string(from: slice.data.percentage * 100 as NSNumber).map{"\($0)%"} ?? ""
}

let textLayer = PiePlainTextLayer()
textLayer.animator = AlphaPieViewLayerAnimator()
textLayer.settings = textLayerSettings

这是自定义视图层,使其能够创建自定义视图

let viewLayer = PieCustomViewsLayer()

let settings = PieCustomViewsLayerSettings()
settings.viewRadius = 135
settings.hideOnOverflow = false
viewLayer.settings = settings

viewLayer.viewGenerator = {slice, center in
    let myView = UIView()
    // add images, animations, etc.
    return myView
}

交互性和事件

遵守PieChartDelegate以响应交互和其他事件

func onGenerateSlice(slice: PieSlice)
func onStartAnimation(slice: PieSlice)
func onEndAnimation(slice: PieSlice)
func onSelected(slice: PieSlice, selected: Bool)

动态切片插入

chartView.insertSlice(index: 1, model: PieSliceModel(value: 5, color: UIColor.blue))

贡献

  1. 分支
  2. 将更改提交到你分支的分支中
  3. 推送你的代码并创建一个合并请求

展望

可以将层系统进一步抽象,以便将这些切片本身放在一层中。这样,我们可以将多个切片层组合起来,创建更复杂类型的饼图。

鸣谢

示例中使用的食物图片来自freepik.com,flaticon.com/authors/madebyoliver

创建者

Ivan Schütz

许可证

SwiftCharts受版权保护(c)2017 Ivan Schütz,并在附件中以开源的形式发布,遵循Apache 2.0许可证

本软件按“现状”提供,不提供任何保证,无论是明示的还是隐含的,包括但不限于适销性、特定目的适用性和非侵权性保证。
在任何情况下,作者均不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他方式而产生的,无论这些责任是否源自、与软件相关、由软件使用或其他使用相关。
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,