Browse Source

Fixed the extended launch screen causing minor visual issues when rotating the screen in some circumstances.

Alex Szpakowski 10 years ago
parent
commit
3e17fbee7e
2 changed files with 14 additions and 9 deletions
  1. 0 1
      src/video/uikit/SDL_uikitappdelegate.h
  2. 14 8
      src/video/uikit/SDL_uikitappdelegate.m

+ 0 - 1
src/video/uikit/SDL_uikitappdelegate.h

@@ -25,7 +25,6 @@
 
 - (instancetype)init;
 - (void)loadView;
-- (BOOL)shouldAutorotate;
 - (NSUInteger)supportedInterfaceOrientations;
 
 @end

+ 14 - 8
src/video/uikit/SDL_uikitappdelegate.m

@@ -115,7 +115,9 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
     return image;
 }
 
-@implementation SDLLaunchScreenController
+@implementation SDLLaunchScreenController {
+    UIInterfaceOrientationMask supportedOrientations;
+}
 
 - (instancetype)init
 {
@@ -126,6 +128,9 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
     NSBundle *bundle = [NSBundle mainBundle];
     NSString *screenname = [bundle objectForInfoDictionaryKey:@"UILaunchStoryboardName"];
 
+    /* Normally we don't want to rotate from the initial orientation. */
+    supportedOrientations = (1 << [UIApplication sharedApplication].statusBarOrientation);
+
     /* Launch screens were added in iOS 8. Otherwise we use launch images. */
     if (screenname && UIKit_IsSystemVersionAtLeast(8.0)) {
         @try {
@@ -211,6 +216,12 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
         }
 
         if (image) {
+            if (image.size.width > image.size.height) {
+                supportedOrientations = UIInterfaceOrientationMaskLandscape;
+            } else {
+                supportedOrientations = UIInterfaceOrientationMaskPortrait;
+            }
+
             self.view = [[UIImageView alloc] initWithImage:image];
         }
     }
@@ -223,14 +234,9 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
     /* Do nothing. */
 }
 
-- (BOOL)shouldAutorotate
-{
-    return YES;
-}
-
 - (NSUInteger)supportedInterfaceOrientations
 {
-    return UIInterfaceOrientationMaskAll;
+    return supportedOrientations;
 }
 
 @end
@@ -333,7 +339,7 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
 
     SDL_SetMainReady();
     [self performSelector:@selector(postFinishLaunch) withObject:nil afterDelay:0.0];
-    
+
     return YES;
 }