Cocoa 屏幕保护视图,第二屏上的CAEmitterLayer起伏

Cocoa 屏幕保护视图,第二屏上的CAEmitterLayer起伏,cocoa,core-animation,screensaver,caemitterlayer,Cocoa,Core Animation,Screensaver,Caemitterlayer,你知道为什么一个屏幕保护程序只使用一个普通的ScreenSaverView子类和一个CAEmitterLayer子层,那么它在主屏幕上的渲染效果会很好,在次屏幕上的渲染效果会很不稳定吗 这是我的初始化代码: - (id)initWithFrame:(NSRect)frame isPreview:(BOOL)isPreview { self = [super initWithFrame:frame isPreview:isPreview]; if (self) { C

你知道为什么一个屏幕保护程序只使用一个普通的
ScreenSaverView
子类和一个
CAEmitterLayer
子层,那么它在主屏幕上的渲染效果会很好,在次屏幕上的渲染效果会很不稳定吗

这是我的初始化代码:

- (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
听起来确实是使用CoreAnimation在
ScreenSaverView
子类中进行调整的好选择,可惜除了默认模式之外,所有其他模式都不能按照文档使用


(由于动画是由核心动画提供动力的,所以我在
设置动画时间间隔中输入什么并不重要,或者完全删除调用,正如实验所示)

根据

要创建图层宿主视图,必须先调用setLayer:并提供图层对象,然后再调用SetWantLayer:方法;这些方法调用的顺序至关重要


此外:它是哪个操作系统版本?当两个显示器镜像时(或反之亦然),是否也会出现起伏?

没有人谈论创建一个层宿主视图(顺便说一句,最新的操作系统版本不鼓励这样做)。这个序列对于创建一个以图层为背景的视图来说非常好。