码迷,mamicode.com
首页 > 移动开发 > 详细

IOS折线图二

时间:2015-09-21 15:25:02      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

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

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

但结果并不理想:

技术分享

 

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

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

技术分享

还有就是之前博客也提到过的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];
    }

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

IOS折线图二

标签:

原文地址:http://www.cnblogs.com/5ishare/p/4826179.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!