Note that there are some explanatory texts on larger screens.

plurals
  1. POOnly first UIView added view addSubview shows correct orientation
    primarykey
    data
    text
    <p>I've got three ViewControllers set up to handle three views. The problem that I'm having is that in the simulator the orientation is LandscapeRight (which is what I want), and the first view shows up correctly in that landscape view, but when I move onto the second and third views, they show up rotated 90 degrees counter-clockwise with the upper-left corner of the view in the lower left corner of the phone's screen. I've been trying to debug this for a few days and the closest that I've gotten to a clue is tracing it the following way:</p> <p>The following is in my app delegate's applicationDidFinishLaunching:</p> <pre><code>NSLog(@"1"); [window addSubview:welcomeController.view]; NSLog(@"2"); [window addSubview:goalController.view]; NSLog(@"3"); [window addSubview:planningController.view]; NSLog(@"4"); [window bringSubviewToFront:welcomeController.view]; NSLog(@"5"); </code></pre> <p>Each of my ViewControllers implement something similar to the following (the only change being the controller's name switched out in the string passed to NSLog):</p> <pre><code>- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations NSLog(@"called for WelcomeController"); return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); } </code></pre> <p>With that, I get the following output on the Console:</p> <pre><code>a called for WelcomeController called for WelcomeController called for WelcomeController called for WelcomeController 2 called for GoalController 3 called for PlanningController 4 5 </code></pre> <p>I find it interesting that shouldAutorotateToInterfaceOrientation is called 4 times for the first view that's added, while the other two only get called once. I expect that this is probably because it's got to do some setup at first (and I believe that the simulator starts off in portrait mode, so it's might be calling it while doing the rotation), but I find the correlation a bit suspicious.</p> <p>I've switched the order around so that the addSubview is called for the goalController first and the welcomeController second. In this case, it's the goalController which displays in the correct landscape orientation (it's normally the welcome controller). This would seem to eliminate my XIB files and the ViewControllers themselves. I'm not sure why the first view where addSubview is called is special. I also tried using insertSubview at index 0 with the same results.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload