У меня есть пользовательский UIView с DrawRect:круги для рисования в пользовательских UIView
-(void)drawRect:(CGRect)rect{
CGContextRef context = UIGraphicsGetCurrentContext();
[self drawControlPointsWithCoordsX:point.x andY:point.y forRect:CGRectMake(0, 0, 320, 600) andContext:context];
NSLog(@"Values: %f and %f", point.x, point.y);
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[self startTimer];
});
}
[само StartTimer]; является методом инициации. В этом методе я запускаю таймер, который создает несколько пар ординат. Он называется только один раз. Координаты приходят в таком виде:
значения: 276.711670 117.279999 и
и держать все время меняется. Все значения регистрируются. В методе, который повторяется по таймеру каждый 0.1с я называю:
[self drawRect:CGRectMake(0, 0, 320, 600)];
В журнале работ, а координаты постоянно меняются, и правильно, но только два или три точки нанесены (вместо более или менее 400), и они находятся в неправильном месте.
Это код для рисования точек:
- (void)drawControlPointsWithCoordsX:(int)x andY:(int)y forRect:(CGRect)rect andContext:(CGContextRef)contextRef
{
UIGraphicsPushContext(contextRef);
CGContextSetLineWidth(contextRef, 2.0);
CGContextSetRGBFillColor(contextRef, 0, 0, 1.0, 1.0);
CGContextSetRGBStrokeColor(contextRef, 0, 0, 1.0, 1.0);
CGRect circlePoint = (CGRectMake(x,y, 5.0, 5.0));
CGContextFillEllipseInRect(contextRef, circlePoint);
}