No se puede establecer SKView backgroundColor

Tengo un problema donde el color de background de mi SKView (gris) se muestra brevemente antes de que se presente la escena.

self.skView.backgroundColor = [SKColor blueColor] configurarlo manualmente, tanto a través del editor Storyboard como en mi controller ( self.skView.backgroundColor = [SKColor blueColor] ), pero sigue siendo gris. ¿No es este un atributo que puede anularse?

Actualización n. ° 1

Aquí hay una pequeña explicación de lo que está sucediendo:

  1. viewDidLoad se llama y skView se presenta en la pantalla con un background gris ( skView.scene no está configurado todavía).
  2. Cargo todos los resources del juego (que toma ~ 1 segundo) y durante este punto el background gris es visible.
  3. Una vez cargados los resources, cargué la escena y la presento (la pantalla gris se reemplaza con el contenido de la escena)

ViewController

 - (void)viewDidLoad { [self.activityIndicator startAnimating]; [self authenticatePlayer]; self.skView.backgroundColor = [SKColor blueColor]; // During this time the grey screen is visible as the assets are being loaded and take ~1 second // self.skView.scene is NULL here so I cannot set the backgroundColor... [GamePlayScene loadSceneAssetsWithCompletionHandler:^{ [self.activityIndicator stopAnimating]; self.activityIndicator.hidden = YES; CGSize viewSize = self.skView.bounds.size; self.gamePlayScene = [[GamePlayScene alloc] initWithSize:viewSize]; self.adView.autoresizingMask = UIViewAutoresizingFlexibleWidth; [self.skView presentScene:self.gamePlayScene]; }]; ... 

Me temo que tendrás que presentar tu escena con la configuration más básica hecha (como configurar backgroundColor) y luego cargar el rest, o presentar una escena de "carga" hasta que se cargue la escena del juego, y luego replacela.

Creo que lo has confundido con la propiedad SKScene del mismo nombre :

 self.scene.backgroundColor = [SKColor blueColor]; 

Tenga en count que self.scene (también self.view ) será nil hasta después de que el nodo se haya agregado como hijo a otro nodo (que ya forma parte del gráfico de escena) respectivamente hasta que se haya presentado la escena.

Debería poder configurar el color de background de SkView en la vista de presentación de los controlleres de viewDidLoad : antes de presentar la vista. ¿Esto no está sucediendo?

Siempre que lo hayas agregado a un nodo principal

Utilizando la plantilla básica para el kit de sprites, pude establecer el background en negro con este código dentro del file GameViewController.m:

 - (void)viewDidLoad { [super viewDidLoad]; // Configure the view. SKView * skView = (SKView *)self.view; skView.showsFPS = YES; skView.showsNodeCount = YES; /* Sprite Kit applies additional optimizations to improve rendering performance */ skView.ignoresSiblingOrder = YES; // Create and configure the scene. GameScene *scene = [GameScene sceneWithSize:skView.bounds.size]; scene.scaleMode = SKSceneScaleModeAspectFill; scene.backgroundColor = [UIColor blackColor]; // Present the scene. [skView presentScene:scene]; } 

No estoy seguro de si esto es exactamente lo que estabas buscando pero se deshizo del background gris que no parecía desaparecer. En su caso, creo que querría establecer la propiedad de color de background "gamePlayScene" después de inicializar la escena.

¡Espero que esto ayude!