diff --git a/src/video/uikit/SDL_uikitappdelegate.h b/src/video/uikit/SDL_uikitappdelegate.h index cc4494dbb..45dd91e40 100644 --- a/src/video/uikit/SDL_uikitappdelegate.h +++ b/src/video/uikit/SDL_uikitappdelegate.h @@ -25,7 +25,6 @@ - (instancetype)init; - (void)loadView; -- (BOOL)shouldAutorotate; - (NSUInteger)supportedInterfaceOrientations; @end diff --git a/src/video/uikit/SDL_uikitappdelegate.m b/src/video/uikit/SDL_uikitappdelegate.m index 3306f38e9..2ae61827f 100644 --- a/src/video/uikit/SDL_uikitappdelegate.m +++ b/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; }