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 に答える