Ipad orientation is not working well

自闭症网瘾萝莉.ら 提交于 2019-12-12 00:34:12

问题


I am creating an application with Landscape Right orientation. For that I set the Initial interface orientation property in info.plist file. Then in every view I handled

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {   
    return(interfaceOrientation==UIInterfaceOrientationLandscapeRight);
}

It works fine in simulator but in device its behave differently. My first view is in proper orientation. There is is popover which display another view that comes in portrait mode. Still my status bar is in Landscape Right..

For navigating from one view to another view I am using..

self.window.rootViewController = self.myNav;

I have multiple navigation Controller and adding those using the upper code. I am not getting what is the problem.

Any help will be appreciated.

EDIT: I had used

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 

I never get this issue in simulator but getting this in device and not every time. I have used Supported interface orientations (iPad) too and set Landscape (right home button) value for item0.

Thanks In advance


回答1:


You need to set the "Simulated Metrics > Orientation" property of your top view (in all your xib files) to be "Landscape". The default is portrait.

The question was answered pretty well here - Landscape Mode ONLY for iPhone or iPad .

I also have an app that like yours only supports UIInterfaceOrientationLandscapeRight. I haven't run into any orientation issues so far. I only have one UIViewController under the window. This UIViewController has its own UITabBar that I use to change pages. So, we change pages differently. I set my UIViewController using the rootViewController property of the window just like you, but again I only have one.

Also, I never had to do anything like the [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications] call that you included. Since you only support LandscapeRight orientation, you shouldn't care to be notified of changes.

EDIT

I created a sample project, which I can post if necessary, and I think I may know your problem. First - do you only encounter the sizing issue inside popovers? If so, then I don't think orientation is throwing you off but the popover itself. My sample project has 3 view controllers. The first loads the second by changing the window's rootViewController. That worked fine. The second view controller has a button to open a popover. This will show up wrong unless you set the contentSizeForPopover on the view controller as shown below:

- (IBAction) showVC3InPopover
{
    UIViewController * vc3 = [[VC3 alloc] init];
    /** Set the contentSizeForViewInPopover property to determine how 
        large the view will be in the popover!  You can do this in the 
        init method(s) of the view controller if you prefer, it's just 
        easy to do here */
    vc3.contentSizeForViewInPopover = vc3.view.frame.size;
    [_popover release], _popover = nil;
    _popover = [[UIPopoverController alloc] initWithContentViewController:vc3];
    [vc3 release];

    [_popover presentPopoverFromRect:_showPopoverButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

See if this fixes your problem. If it does, there are other ways to control the popover size, but this is just what I typically do. However, just know that the PopoverController ignores the size of the view in the viewcontroller you load.




回答2:


How many views (or viewControllers) you have? You might need to implement this orientation logic in all those views??



来源:https://stackoverflow.com/questions/7007930/ipad-orientation-is-not-working-well

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!