Почему эта действительно простая пустая белая заставка не работает? (Оно черное)
Я пытаюсь сделать простую заставку 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
будет вызван при необходимости.
Кварцевый композитор или даже экранная заставка могут быть хорошими, не кодовыми способами сделать это.