IOS折线图二

上周把项目的折线图给做了下,今天想着把它完善完善,自己设置了不同的数据源来测试,哈哈,还真遇到问题了, 就是给图表设置折点数为0时,视图显示的还是原来的,由于数据为空,应该将其设置为空,所以想着怎么把ScrollView中的子视图情况。由于标题和折点值是用Label,可以删除View。但画的线和点是通过贝塞尔曲线添加到图层上了,还要把子视图的layer删掉。可是问题来了, 先上删除代码:

int count = [self.layer.sublayers count];
    ; i<count; i++) {
        [self.layer.sublayers[i] removeFromSuperlayer];
    }

但结果并不理想:

IOS折线图二

当多次点击日按钮时,会慢慢的删除,感觉蛮怪的,觉得可苦逼了。后来问了下oliver,大神就是大神,一会就搞出原因了。原来每次删除一个父视图之后就会时父视图的子图层个数-1,而如果每次都是用i索引删除就会遗漏一些子图层,修改之后就完美了。

int count = [self.layer.sublayers count];
    ; i<count; i++) {
        [self.layer.sublayers[] removeFromSuperlayer];
    }

IOS折线图二

还有就是之前博客也提到过的for in 和for(int i=0;......)的区别。http://www.cnblogs.com/5ishare/p/4372398.html

我用下面的代码遍历时也是提示错误:was mutated while being enumerated 遍历的时候不能删除

 for (CALayer *layer in self.layer.sublayers) {
        [layer removeFromSuperlayer];
    }

正确的代码更新在折线图那篇博客中了

上一篇:Orcle查询优化改写-----给查询结果排序


下一篇:IOS折线图