サブレイヤーを持つ単純な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 テンプレートによって提供されます)。
面白いことに、CoreAnimation を使用backingStoreType
してサブクラスを微調整するのに適しているように思えますが、残念ながら、デフォルトのものを除く他のすべてのモードは、ドキュメントに従って使用されるべきではありません..ScreenSaverView
(アニメーションは Core Animation を利用しているため、何を入れても問題ありません。setAnimationTimeInterval
また、実験で示されているように、呼び出しを完全に削除することもできます)