diff --git a/include/SDL_hints.h b/include/SDL_hints.h
index ed76ce53ffba6bff7196cf8aa3969507ad5082af..e106650f132ad96a2b9232838e6904273f082cb8 100644
--- a/include/SDL_hints.h
+++ b/include/SDL_hints.h
@@ -118,6 +118,17 @@ extern "C" {
  *  By default SDL does not sync screen surface updates with vertical refresh.
  */
 #define SDL_HINT_RENDER_VSYNC               "SDL_RENDER_VSYNC"
+	
+/**
+ *  \brief  A variable controlling which orientations are allowed on iOS.
+ *
+ *  In some circumstances it is necessary to be able to explicitly control
+ *  which UI orientations are allowed.
+ *
+ *  This variable is a space delimited list of the following values:
+ *    "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown"
+ */
+#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"
 
 
 /**
diff --git a/src/video/uikit/SDL_uikitwindow.m b/src/video/uikit/SDL_uikitwindow.m
index 97fa50058819f6109ef43dfd2731748d65505ef9..50a8ec819ee1ecf7530e7c55c069c88b2a0eb33e 100644
--- a/src/video/uikit/SDL_uikitwindow.m
+++ b/src/video/uikit/SDL_uikitwindow.m
@@ -24,6 +24,7 @@
 #include "SDL_video.h"
 #include "SDL_mouse.h"
 #include "SDL_assert.h"
+#include "SDL_hints.h"
 #include "../SDL_sysvideo.h"
 #include "../SDL_pixels_c.h"
 #include "../../events/SDL_events_c.h"
@@ -48,6 +49,37 @@
 }
 
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orient {
+    const char *orientationsCString;
+    if ((orientationsCString = SDL_GetHint(SDL_HINT_ORIENTATIONS)) != NULL) {
+        BOOL rotate = NO;
+        NSString *orientationsNSString = [NSString stringWithCString:orientationsCString
+                                                            encoding:NSUTF8StringEncoding];
+        NSArray *orientations = [orientationsNSString componentsSeparatedByCharactersInSet:
+                                 [NSCharacterSet characterSetWithCharactersInString:@" "]];
+        
+        switch (orient) {
+            case UIInterfaceOrientationLandscapeLeft:
+                rotate = [orientations containsObject:@"LandscapeLeft"];
+                break;
+                
+            case UIInterfaceOrientationLandscapeRight:
+                rotate = [orientations containsObject:@"LandscapeRight"];
+                break;
+                
+            case UIInterfaceOrientationPortrait:
+                rotate = [orientations containsObject:@"Portrait"];
+                break;
+                
+            case UIInterfaceOrientationPortraitUpsideDown:
+                rotate = [orientations containsObject:@"PortraitUpsideDown"];
+                break;
+                
+            default: break;
+        }
+        
+        return rotate;
+    }
+
     if (self->window->flags & SDL_WINDOW_RESIZABLE) {
         return YES;  // any orientation is okay.
     }