美文网首页
『ios』echarts放到原生中所带来的极致体验。(持续采坑进

『ios』echarts放到原生中所带来的极致体验。(持续采坑进

作者: butterflyer | 来源:发表于2018-10-24 22:42 被阅读49次

持续采坑中...

timg (1).jpeg QQ20181024-185700-HD.gif

要实现上面的效果,需要一个了解下几个函数

 myChart.dispatchAction({type: 'downplay', seriesIndex: 1, dataIndex: beforeDefaultIndex });
 myChart.dispatchAction({type: 'highlight',seriesIndex: 1,dataIndex: beforeDefaultIndex});//设置默认选中高亮部分
 myChart.dispatchAction({type: 'showTip',seriesIndex:1,dataIndex:beforeDefaultIndex});

然后才是option拼接,由于在echarts官方实例中,我无法拿到echarts实例对象,所以只能直接怼。因为之前的图用这个函数不生效所以,不太有信心。

话不多说直接上代码,下面的是option对象

/**
 *  model转chartOption
 */
- (NSDictionary *)chartOptionByModel{

    self.timeAxis = @[@"1",@"2",@"3",@"4",@"5"].mutableCopy;
    self.source = @[@"2",@"3",@"5",@"2",@"6"].mutableCopy;
    NSArray *data = @[@[@"1",@"2"],
                      @[@"2",@"3"],
                      @[@"3",@"5"],
                      @[@"4",@"2"],
                      @[@"5",@"6"]];
    
    NSDictionary * option = [NSDictionary dictionary];
    option = @{
               @"dataZoom":@{
                       @"type":@"inside"
                       },
               @"tooltip":@{
                       @"trigger":@"axis",
                       @"axisPointer":@{
                               @"type":@"cross",
                               },
                       @"show":[NSNumber numberWithBool:true]
                       },
               @"grid":@[@{
                             @"left":@"0px",
                             @"right":@"0px",
                             @"bottom":@"0px",
                             @"top":@"0px",
                             }],
               @"xAxis":@[@{@"show":[NSNumber numberWithBool:true],
                            @"data":self.timeAxis,
                            @"splitLine":@{@"lineStyle":@{@"type":@"dashed"}},
                            @"splitNumber":@20
                            }],
               @"yAxis":@[@{
                              @"show":[NSNumber numberWithBool:true],
                              @"type":@"value",
                              @"splitLine":@{@"lineStyle":@{@"type":@"dashed"}}
                              }],
               @"series":@[
                            @{
                               @"type":@"line",
                               @"name": @"In",
                               @"smooth":[NSNumber numberWithBool:true],
                               @"showSymbol":[NSNumber numberWithBool:false],
                    
                               @"data":data,
                               @"itemStyle":@{@"normal":@{@"color":@"#ffffff"}},
                              @"markPoint": @{
                                 @"itemStyle": @{
                                  @"normal": @{
                                   @"color": @"transparent"
                               }
                               },
                               @"label": @{
                               @"normal": @{
                                   @"show": [NSNumber numberWithBool:true],
                                   @"position": @"left",
                              // formatter: myRegression.expression,
                                   @"textStyle": @{
                                     @"color": @"#333",
                                     @"fontSize": @14
                               }
                               }
                               },
                               @"data": @[@{
                               @"coord": data[data.count - 1]
                               }]
                               },
                           
                               @"lineStyle":@{
                                       @"normal":@{
                                               @"width":@"0.5",
                                               @"color":@"#fff"
                                               }
                                       },
                             
                               },
                            @{
                                @"name": @"scatter",
                                @"type": @"scatter",
                                @"itemStyle": @{
                                        @"normal": @{
                                                @"color": @"#ffffff",
                                                @"borderColor":@"#ffffff"
                                                }},
                                @"label": @{
                                    @"emphasis": @{
                                        @"show": [NSNumber numberWithBool:true],
                                        @"position": @"left",
                                        @"itemStyle": @{
                                              @"normal": @{
                                              @"color": @"#ffffff",
                                              @"borderColor":@"#ffffff"
                                           }
                                        },
                                        @"textStyle": @{
                                              @"color": @"#fff",
                                               @"fontSize": @16
                                              }
                                        }
                                },
                                @"data": data
                                
                                }
                           
                           ]
               };
    return option;
}

重点在于 html中的代码
需要考虑是代码控制的默认选中,还是手触发的点击事件。两个是有区别的

   var myChart; //echarts表
            var beforeDefaultIndex;//记录之前的选中的点。
 function setOption(opt){//opt  echarts option所需    isNeedDefault 是否需要默认选中的
            option = opt;
            var echartsDom = document.getElementById('sc_chart');
            echartsDom.removeAttribute("_echarts_instance_");
            myChart = echarts.init(echartsDom);
            myChart.setOption(option);
            window.addEventListener('resize', function () {
                myChart.resize();
            })
        }
        function setCancelBeforeIndex(){ //取消之前选中
           myChart.dispatchAction({type: 'downplay', seriesIndex: 1, dataIndex: beforeDefaultIndex });
        }
        function setNeedDefault(currentIndex){//添加默认的选中
            beforeDefaultIndex = currentIndex;
            myChart.dispatchAction({type: 'highlight',seriesIndex: 1,dataIndex: beforeDefaultIndex});//设置默认选中高亮部分
            
            myChart.dispatchAction({type: 'showTip',seriesIndex:1,dataIndex:beforeDefaultIndex});
            
            myChart.on('mouseover',function(e){//手触发选中 如果不是那个点就把原来点取消
                               if(e.dataIndex != beforeDefaultIndex){
                                   myChart.dispatchAction({type: 'downplay', seriesIndex: 1, dataIndex: beforeDefaultIndex  });
                               }
                       });
            myChart.on('mouseout',function(e){//手抬起的时候,把那个点选中
                                      beforeDefaultIndex = e.dataIndex;
                                      myChart.dispatchAction({type: 'highlight',seriesIndex: 1,dataIndex: e.dataIndex});
                       
                                  });
        }

ios自习室欢迎进入,一起学习一起进步。

IMG_7291.JPG

相关文章

  • 『ios』echarts放到原生中所带来的极致体验。(持续采坑进

    持续采坑中... 要实现上面的效果,需要一个了解下几个函数 然后才是option拼接,由于在echarts官方实例...

  • 『ios』echarts放到原生中所带来的极致体验。

    需求驱动开发。 因项目需求,需要在app中搞大量的表格。当然相如什么charts,pncharts等原生插件也可以...

  • echarts采坑总结

    1.柱形图x轴的名称很长,挤得有些字不显示了 写上这些就可以了 2.柱形图最大值设置 3.y轴加% 4.图例没有加...

  • Echarts 采坑笔记

    标题颜色属性修改 背景颜色的设置 设置grid 绘图位置 修改x轴和y轴的颜色 x轴文字倾斜 设置legend 标...

  • react-native native-echarts 趴坑指

    react-native 日常踩坑 下面我们探讨下native-echarts经常会踩到的坑 1、ios rele...

  • H5学习之路

    持续更新中... 前言 从iOS开发入坑,途中掉入Android小坑,现在公司负责iOS及Android大坑,已经...

  • 安卓部分机型webview不显示echarts

    问题 项目用到echarts图表插件,用h5写好图表接入数据后,放入原生webview。测试ios可以正常渲染,安...

  • IOS采坑记

    1.消除input在ios里面的默认内阴影

  • iOS采坑记录

    采坑记录 iOS 通过 Webview点击下载链接问题 Webview点击下载链接,需要通过文件名下载文件,需要通...

  • 持续精进

    本周践行的内容是持续精进 如何持续精进,转发班班分享的关于“九段”精进的心得 ❶精进=精+进 精是做到极致,进是进...

网友评论

      本文标题:『ios』echarts放到原生中所带来的极致体验。(持续采坑进

      本文链接:https://www.haomeiwen.com/subject/rpwxtqtx.html