Рисование Objective-C без drawRect: фигуры не отображаются

У меня есть класс mapWindow, который подключен к окну в IB.

Несмотря ни на что, красный круг, который я хочу, чтобы программа отображала, не будет отображаться, если только код не находится под drawRect или я не перемещаю границы окна. Даже разблокировка и блокировка фокуса не обновляет окно.

theOtherWindowView на самом деле является NSView, подключенным к пользовательскому представлению в IB.

- (void)test
{
    [theOtherWindowView lockFocus];
    NSBezierPath *path = [NSBezierPath bezierPath];
    NSPoint center = [self drawPoint];
    [path moveToPoint: center];
    [path appendBezierPathWithArcWithCenter:center
                                        radius:explosionRadius
                                    startAngle:0
                                    endAngle:360];
    [[NSColor redColor] set];
    [path fill];

    [theOtherWindowView unlockFocus];
}

Я не хочу использовать drawRect, потому что мне нужно несколько экземпляров, а не одна фигура, координаты которой меняются при каждом обновлении.

Я также пробовал [self lockFocus] и [mapWindow lockFous]


person evdude100    schedule 13.06.2011    source источник


Ответы (1)


Продолжайте рисовать в -drawRect:. Когда -drawRect: будет отправлено, система координат вашего вида и границы отсечения будут настроены для вас, а контекст рисования вашего окна будет текущим.

В этом методе нарисуйте столько кругов, сколько хотите.

person NSResponder    schedule 13.06.2011
comment
Нет, потому что drawrect можно вызывать только через setNeedsDisplay:YES, что позволяет использовать один объект, а не несколько копий. - person evdude100; 30.06.2011
comment
@evdude100, вы видите, как можно нарисовать несколько путей в одном и том же вызове drawRect:? - person alltom; 02.07.2011
comment
Да, но я хочу, чтобы нажатие кнопки определяло точку для фигуры (сделано), но создавало форму в каждой точке, которую я определяю - person evdude100; 03.07.2011