Я погружаюсь в программирование 2D-графики на iPad и хочу рисовать круги там, где пользователь касался экрана.Вот мой простой код для выполнения этого ...
Класс просмотра
-(void)setTouchPoint:(CGPoint)point
{
touchPoint.x = point.x;
touchPoint.y = point.y;
[self setNeedsDisplay];
}
-(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if(self != nil)
{
self.backgroundColor = [UIColor whiteColor];
self.opaque = YES;
self.clearsContextBeforeDrawing = YES;
}
return self;
}
-(void)drawInContext:(CGContextRef)context
{
// Drawing with a white stroke color
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0);
// And draw with a blue fill color
CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0);
// Draw them with a 2.0 stroke width so they are a bit more visible.
CGContextSetLineWidth(context, 2.0);
// Add an ellipse circumscribed in the given rect to the current path, then stroke it
CGContextAddEllipseInRect(context, CGRectMake(touchPoint.x - 10, touchPoint.y - 10, 20, 20));
CGContextStrokePath(context);
}
-(void)drawRect:(CGRect)rect
{
[self drawInContext:UIGraphicsGetCurrentContext()];
}
Каждый раз, когда пользователь касается экрана, представление очищается, вызывая предыдущий кругстереть, и новый круг рисуется там, где пользователь коснулся.
- Почему это происходит?
- Как предотвратить удаление предыдущих кругов?
Я пытался установить для свойства self.clearsContextBeforerDrawing
значение NO
, но это не помогло.
Большое спасибо заранее за вашу помощь!