2

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

2 回答 2

2

ScreenSaverView画出一切-animateOneFrame。为了能够使用-drawRect(在你的情况下,你应该,因为你没有动画任何东西)实现animateOneFrame这样的:

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

这种方式,-drawRect将在适当的时候被调用。

于 2012-09-23T05:15:35.177 回答
0

Quartz composer 甚至图片屏幕保护程序可能是很好的非代码方式来做到这一点。

于 2014-01-15T06:37:48.020 回答