У меня есть некоторый код в методе drawRect:
, который рисует серию окружностей из массива. Я могу убедиться, что точки остаются в памяти достаточно долго и доходят до точки, где они должны быть нарисованы. Тем не менее, кажется, что fill
метод NSBezierPath
не рисует круги.
Вот мой drawRect:
- (void)drawRect:(NSRect)dirtyRect
{
NSPoint aPoint;
NSRect aRect = NSMakeRect(0, 0, 6, 6);
// Erase the rectangle
[[NSColor clearColor] set];
NSRectFill([self bounds]);
// Draw the dots
[[NSColor colorWithCalibratedRed:(77.0/255.0) green:(11.0/255.0) blue:(11.0/255.0) alpha:1.0] set];
for(NSValue *aValuePoint in arrayOfPoints) {
aPoint = [aValuePoint pointValue];
aRect.origin.y = aPoint.y - aRect.size.height/2.0;
aRect.origin.x = aPoint.x - aRect.size.width/2.0;
// The code does get to this point, it does not draw however...
[[NSBezierPath bezierPathWithOvalInRect:aRect] fill];
}
}
У меня есть другой метод drawDotAtPoint:
, где я добавляю точки в массив
- (void)drawDotAtPoint:(NSPoint)aPoint
{
NSLog(@"drawDotAtPoint:(%f, %f)", aPoint.x, aPoint.y);
[arrayOfPoints addObject:[NSValue valueWithPoint:aPoint]];
// I've also tried using [self superview] instead of just self
[self setNeedsDisplay: YES];
}
И хотя я могу убедиться, что эти методы вызываются в правильное время (или, кажется, так), никакого рисования после начального drawRect: не произойдет
Sidenote:
Моя цель - нарисовать точку, чтобы вокруг нее появилось кольцо, увеличилось и исчезло. Очень похоже на индикатор текущего местоположения GPS на iOS в приложении Карты. Любое понимание этого также будет оценено.