首页 > 代码库 > IOS使用CGContextRef动态画折线图
IOS使用CGContextRef动态画折线图
- (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextClearRect(context, rect); CGContextSetLineWidth(context, _lineWidth); //设置画笔宽度 CGContextSetFillColorWithColor(context, [[self backgroundColor] CGColor]); //设置背景填充颜色 CGContextFillRect(context, rect); //填充背景 CGContextSetStrokeColorWithColor(context, _lineColor.CGColor); //设置画笔颜色 //arr 为实时获取的动态数据数组 for (int i = 0; i < _arr.count; i ++) { if (i < _arr.count - 1) { CGPoint pp[2]; [_arr[i] getBytes:&pp[0] length:sizeof(CGPoint)]; [_arr[i+1] getBytes:&pp[1] length:sizeof(CGPoint)]; CGContextMoveToPoint(context, pp[0].x, pp[0].y); CGContextAddLineToPoint(context, pp[1].x, pp[1].y); CGContextStrokePath(context); } } } - (void)addDataToArr:(CGFloat)data { if (!_arr) _arr = [[NSMutableArray alloc] init]; CGPoint point; //MAX_X_COUNT表示在X轴上显示的最大个数,超过后则X轴向左移动,每次移动一个单位 if (_arr.count >= MAX_X_COUNT) { //移动x轴 CGRect frame = self.frame; frame.origin.x -= (self.frame.size.width / MAX_X_COUNT); frame.size.width += (self.frame.size.width / MAX_X_COUNT); self.frame = frame; } point.x = _arr.count * (self.frame.size.width / MAX_X_COUNT); //如果当前值大于Y轴所代表的最大值,则将Y轴最大值扩大为当前值的2倍 if (data > _maxYPower) { //改变y的最大值为currentPower _maxYPower = data * 2; } point.y = data; //将实时获取的数据存入_arr中 [_arr addObject:[NSData dataWithBytes:&point length:sizeof(CGPoint)]]; }只需动态调用addDataToArr:后再调用[self.view setNeedDisplay]即可
IOS使用CGContextRef动态画折线图
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。