iOS-Echarts 1.4.4

iOS-Echarts 1.4.4

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2017 年 4 月

Pluto Y 维护。



  • PlutoY

iOS-Echarts - 使用 echarts 构建的控件

中文文档


这是一个高度定制的 iOS 和 Mac 应用程序图表控件,它使用 Echart(Echart2) 构建。它只是封装了 JavaScript 的控件。它提供了一个链式方式来描述您的 echarts 配置。它方便关注应用程序的逻辑并优化代码。它避免了开发者思维分散在 JavaScript 和 Objective-C 之间的交互。

提示:如果您想使用 iOS8.0,我建议您使用基于 WKWebViewWKEchartsView。由于 WKEchartsView 的接口与 PYEchartsView 相同,因此如果您正在使用 PYEchartsView,只需将 PYEchartsView 改为 WKEchartsView

如果您喜欢这个控件,请给它 star。这可以使我更加关注它。

如果您发现任何问题,请 issue 给我。也热烈欢迎 pull requests。

screen-shot screen-shot

Echarts 信息


Echarts GitHub

Echarts 网站(英文)

安装


有两种方式在您的项目中使用 iOS-Echarts:

  • 使用 Cocoapods:pod iOS-Echarts
  • 手动
    • 首先,将所有文件复制到您的项目中
    • 其次,从项目中删除名为 'js' 的目录 Remove references
    • 最后,通过 create floder references 添加名为 'js' 和 'theme' 的目录

⚠️*** 请确保 'js' 和 'theme' 目录的颜色为蓝色. ***⚠️

当您使用它时,应在您的项目中导入一个头文件:iOS-Echarts.h。最后,只需初始化您所需的 PYEchartsView 和 PYOption。

如果您不知道如何设置正确的选项值,您可以在 EChart 网站 中查看文档。

使用方法


以下代码示例中的常用步骤

// Firstly, you should have a instance of PYEchartsView
@property (weak, nonatomic) IBOutlet PYEchartsView *echartsView;

...

PYOption *option = ... // Then, configure something about options
// Finally, load echarts view
[_echartsView setOption:option]; 
[_echartsView loadEcharts];

所有属性设置器都是可链的,您可以使用 [property-name]Equal

PYOption *option = [PYOption initPYOptionWithBlock:^(PYOption *option) {

    option.titleEqual([PYTitle initPYTitleWithBlock:^(PYTitle *title) {
        title.textEqual(@"Event River").subtextEqual(@"Test subtext");
    }])
    .tooltipEqual([PYTooltip initPYTooltipWithBlock:^(PYTooltip *tooltip) {
        tooltip.triggerEqual(PYTooltipTriggerItem).enterableEqual(YES);
    }])
    .legendEqual([PYLegend initPYLegendWithBlock:^(PYLegend *legend) {
        legend.dataEqual(@[@"first data", @"second data"]);
    }])
    .toolboxEqual([PYToolbox initPYToolboxWithBlock:^(PYToolbox *toolbox) {
        toolbox.showEqual(YES).featureEqual([PYToolboxFeature initPYToolboxFeatureWithBlock:^(PYToolboxFeature *feature) {
            feature.markEqual([PYToolboxFeatureMark initPYToolboxFeatureMarkWithBlock:^(PYToolboxFeatureMark *mark) {
                mark.showEqual(YES);
            }])
            .restoreEqual([PYToolboxFeatureRestore initPYToolboxFeatureRestoreWithBlock:^(PYToolboxFeatureRestore *restore) {
                restore.showEqual(YES);
            }]);
        }]);
    }])
    .xAxisEqual([[NSMutableArray alloc] initWithArray:@[axis]])
    .seriesEqual([[NSMutableArray alloc] initWithArray:@[series1, series2]])
    .gridEqual([PYGrid initPYGridWithBlock:^(PYGrid *grid) {
        grid.xEqual(@10)
        .x2Equal(@30);
    }]);
}];

许多属性支持add[Name]和add[Name]Arr方法,当您使用类型为NSMutableArray的属性时,您应该首先尝试add方法。

option.addXAxis(//Something about PYAxis)
.addYAxis(//Something about PYAxis)
.addSeries(//Something about PYSeries or sub class of PYSeries)

当您使用PYSeries的子类实例时,您应该首先为其子类属性赋值,然后按照如下方式为PYSeries赋值。

.addSeries([PYCartesianSeries initPYCartesianSeriesWithBlock:^(PYCartesianSeries *series) {
    series.stackEqual(@"Total")
    .smoothEqual(YES)
    .symbolEqual(PYSymbolArrow)
    .symbolSizeEqual(@6)
    .symbolRotateEqual(@(-45))
    .nameEqual(@"Data1")
    .typeEqual(PYSeriesTypeLine)
    .itemStyleEqual([PYItemStyle initPYItemStyleWithBlock:^(PYItemStyle *itemStyle) {
        itemStyle.normalEqual([PYItemStyleProp initPYItemStylePropWithBlock:^(PYItemStyleProp *normal) {
            normal.colorEqual(PYRGBA(255, 0, 0, 1))
            .lineStyleEqual([PYLineStyle initPYLineStyleWithBlock:^(PYLineStyle *lineStyle) {
                lineStyle.widthEqual(@2).typeEqual(PYLineStyleTypeDashed);
            }]);
        }]).emphasisEqual([PYItemStyleProp initPYItemStylePropWithBlock:^(PYItemStyleProp *emphasis) {
            emphasis.colorEqual(PYRGBA(0, 0, 255, 1));
        }]);
    }])
    .dataEqual(@[@(320), @(332), @"-", @(334), @{@"value":@(390),@"symbol":@"star6",@"symbolSize":@(20),@"symbolRotate":@(10),@"itemStyle":@{@"normal":@{@"color":@"yellowgreen"},@"emphasis":@{@"color":@"orange",@"lable":@{@"show":@(YES),@"position":@"inside",@"textStyle":@{@"fontSize":@(20)}}}}}, @(330), @(320)]);
}])

PYCartesianSeriesPYSeries的子类,并且stacksmoothsymbolsymbolSizesymbolPYCartesianSeries的属性。因此,您应该在为PYSeries的属性赋值之前,先为它们赋值。

您也可以逐个为数组赋值。

PYEventRiverSeries *series1 = [PYEventRiverSeries initPYEventRiverSeriesWithBlock:^(PYEventRiverSeries *series) {
    series.weight = @123;
    series.name = @"Series name";
    series.type = PYSeriesTypeEventRiver;
}];

所有属性都可以使用init[Type]WithBlock进行创建。

PYAxis *axis = [PYAxis initPYAxisWithBlock:^(PYAxis *axis) {
    axis.typeEqual(PYAxisTypeTime).boundaryGapEqual(@[@0.05, @0.1]);
}];

联系方式


您可以在Twitter新浪微博上关注和联系我。如果您想为这个项目贡献,也可以联系我。

如果您有QQ,可以加入群号485591970的群组。

许可协议


所有源代码都在MIT许可下。