IOS使用CGContextRef動態畫折線圖

來源:互聯網
上載者:User

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]即可

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.