任何想法为什么仅使用ScreenSaverView
带有CAEmitterLayer
子层的普通子类的屏幕保护程序会在主屏幕上呈现良好而在辅助屏幕上呈现断断续续(好像每 2. 帧在那里呈现......)......?
这是我的初始化代码:
- (id)initWithFrame:(NSRect)frame isPreview:(BOOL)isPreview
{
self = [super initWithFrame:frame isPreview:isPreview];
if (self)
{
CAEmitterLayer* emitterLayer = [MyEmitterFactory emitterLayer:self];
[self setWantsLayer:YES];
[self.layer addSublayer:emitterLayer];
[self setAnimationTimeInterval:1/2.0];
}
return self;
}
这个子类中的其他所有内容都是默认的(由 Xcode 模板提供)。
有趣的是,backingStoreType
听起来确实是ScreenSaverView
使用 CoreAnimation 调整子类的好选择,可惜除了默认模式之外的所有其他模式都不能按照文档使用。
(由于动画由 Core Animation 提供支持,所以我输入什么并不重要setAnimationTimeInterval
- 或者完全删除调用,如实验所示)