Блок Mac UI контролирует рисование / перерисовку - PullRequest
1 голос
/ 18 ноября 2011

Здравствуйте, мне было интересно, может кто-нибудь пролить свет на то, как я могу включить / отключить перерисовку любого класса, унаследованного от nsview?

Я знаю, что в Windows есть сообщение, которое вы можете отправить hwnd для включения / выключениягаджет рисования сообщений.Это также затем распространяется и на детей.Есть ли эквивалентный метод в разработке для Mac?

У меня есть существующая библиотека GUI, и мне было интересно, есть ли способ сделать это, который не требует модификации существующего исходного кода?

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Если проблема в том, что вы выполняете много работы с макетом элемента управления и не хотите, чтобы рисование происходило во время этого, вы можете использовать либо [NSWindow disableScreenUpdatesUntilFlush], либо глобальные функции NSDisableScreenUpdates() и NSEnableScreenUpdates() для не обновляйте экран, пока не будете готовы.

0 голосов
/ 18 ноября 2011

Я не совсем уверен, что именно вы пытаетесь сделать, но представьте, что у вас есть подкласс NSView с методом рисования

.h

BOOL shouldDraw;

.m

-(void)drawRect:(NSRect)someRect
{
    if(shouldDraw)
    {
        [super drawRect:someRect];
    }
}

если вы никогда не вызываете реализацию draw в super, ничто не будет нарисовано.

...