我正在尝试通过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
答案 0 :(得分:2)
ScreenSaverView
通过-animateOneFrame
绘制所有内容。为了能够使用-drawRect
(在你的情况下,你应该,因为你没有动画任何东西)实现animateOneFrame
,以便:{/ p>
- (void)animateOneFrame {
[self setNeedsDisplay:YES]; // -drawRect will be called next draw loop
}
这样,-drawRect
将在适当时调用。
答案 1 :(得分:0)
Quartz作曲家甚至是图片屏幕保护程序可能是很好的非代码方式。