为什么这个真正简单的空白屏幕保护程序不起作用? (它是黑色的)

时间:2012-09-22 22:07:56

标签: objective-c macos cocoa screensaver

我正在尝试通过XCode中的Objective-C制作一个简单的macOS屏幕保护程序,它只用白色填充整个屏幕。 (因为this。)简单,对吧?我也这么认为,但无论我做什么,我都会看到一个空白的黑色屏幕。似乎我的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 个答案:

答案 0 :(得分:2)

ScreenSaverView通过-animateOneFrame绘制所有内容。为了能够使用-drawRect(在你的情况下,你应该,因为你没有动画任何东西)实现animateOneFrame,以便:{/ p>

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

这样,-drawRect将在适当时调用。

答案 1 :(得分:0)

Quartz作曲家甚至是图片屏幕保护程序可能是很好的非代码方式。