Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to set SKView backgroundColor

I have an issue where my SKView's background color (grey) is briefly being displayed before the scene is presented.

I manually attempted to set it, both via the Storyboard editor and in my controller (self.skView.backgroundColor = [SKColor blueColor]) but it remains grey. Is this not an attribute that can be overridden?

Update #1

Here's a little explanation as to what happening:

  1. viewDidLoad is called and skView is presented on the screen w/ a grey background (skView.scene is not set yet).
  2. I load all of the game's assets (which takes ~1 second) and during this point the grey background is visible.
  3. After the assets have been loaded I load the scene and present it (the grey screen is replaced w/ the contents of the scene)

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];

    }];
    ...
like image 536
Kyle Decot Avatar asked Feb 26 '14 20:02

Kyle Decot


1 Answers

I'm afraid you'll either have to present your scene with the most basic setup done (like setting backgroundColor) and then load the rest, or present a "loading" scene until the gameplay scene loads, then replace it.

like image 155
Filip Radelic Avatar answered Sep 20 '22 06:09

Filip Radelic