Почему эта действительно простая пустая белая заставка не работает? (Оно черное)

Я пытаюсь сделать простую заставку MacOS через Objective-C в XCode, которая просто заполняет весь экран белым. (Из-за этого.) Просто, верно? Я тоже так думал, но что бы я ни делал, у меня пустой черный экран. Не похоже, что мой метод drawRect даже вызывается. Есть идеи, что мне не хватает?

#import "Blank_WhiteView.h"

@implementation Blank_WhiteView

- (id)initWithFrame:(NSRect)frame isPreview:(BOOL)isPreview {
    [super animateOneFrame];
    [self setNeedsDisplay:YES];
    return self;
}

- (void)drawRect:(NSRect)rect {

    [super drawRect:rect];
    CGContextRef context = (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort];
    CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);
    CGContextFillRect(context, NSRectToCGRect(rect));
}

- (BOOL)hasConfigureSheet {
    return NO;
}

@end

2 ответа

Решение

ScreenSaverView рисует все через -animateOneFrame, Чтобы иметь возможность использовать -drawRect (и в вашей ситуации, вы должны, потому что вы ничего не оживляете) реализовать animateOneFrame такой что:

- (void)animateOneFrame {
    [self setNeedsDisplay:YES]; // -drawRect will be called next draw loop
}

Сюда, -drawRect будет вызван при необходимости.

Кварцевый композитор или даже экранная заставка могут быть хорошими, не кодовыми способами сделать это.

Другие вопросы по тегам