- Home /
iOS Screen Resolution bug when start in landscape
I can't identify why this started happening, and I hope it's just some configuration I've miss looked.
So, the first time I poll `Screen.width` or `height` right after I start the app from zero, it will bring values as if it's in portrait mode, no matter if I'm in landscape. So, if I start it in portrait it's all right, but if I start it in landscape, I have to turn around twice to fix the initial issue, and get the right "Screen.width x height".
Using newest Unity 4, iOS Player Settings is, of course, set to Auto Rotation. I don't force resolution or orientation anywhere in the code. And this seems like a very similar issue.
Also I get no such problems on editor or android, using the very same project.
Answer by cregox · Dec 14, 2012 at 02:12 PM
I was trying to solve this since yesterday... Today I got more lucky on finding a solution, much faster! :-)
It's a bug on `Screen`. It won't properly identify the device orientation, for some reason. But `Input.deviceOrientation` will. And so we can use it to fix the issue, forcing it into `Screen.orientation`. Like this:
static private void FixFuckingWrongInitialScreenOrientation () {
if ( (Screen.height > Screen.width && Input.deviceOrientation.ToString().ToLower().StartsWith("landscape"))
|| (Screen.width > Screen.height && Input.deviceOrientation.ToString().ToLower().StartsWith("portrait"))
) {
Debug.LogWarning("Fixing wrong screen orientation ("+ Screen.orientation +") to right device orientation: "+ Input.deviceOrientation);
switch (Input.deviceOrientation) {
case DeviceOrientation.LandscapeLeft:
Screen.orientation = ScreenOrientation.LandscapeLeft;
break;
case DeviceOrientation.LandscapeRight:
Screen.orientation = ScreenOrientation.LandscapeRight;
break;
case DeviceOrientation.PortraitUpsideDown:
Screen.orientation = Scre enOrientation.PortraitUpsideDown;
break;
case DeviceOrientation.Portrait:
Screen.orientation = ScreenOrientation.Portrait;
break;
}
}
}
Keep in mind this will remove the auto screen orientation, if it was set before. So this should either be used on `Update` as a replacement for the automatic native unity function or, if used on `Start`, you should set orientation back to auto on the second screen change! Quite complicated patch, huh?
Your answer
Follow this Question
Related Questions
iOS: iPhone 4S doesn't change screen size for landscape 1 Answer
Changing which axis the camera FOV/screen ratio is constrained by 0 Answers
When exporting from Unity to Xcode my game is extremely pixelised 0 Answers
Why is GameCenter UI leaving my orientation stuck the wrong way? How to fix it? 0 Answers