iOS ViewController only support portrait but popup support all orientation - ios

Is it possible to support all orientation for popup (UIAlertController) which pops from the view controller, which is only supporting portrait right now?
Now I have viewcontroller support only portrait but the popup for this viewcontroller not to be landscape.
Help me.

If you have added UIAlertController to the portrait only view controller then i don't think this alert controller only can support all orientations since its added as a child of that view controller so it has to abide the parent.
Whereas if UIAlertController common to Application level then there may be possibilities to support any orientation.
Correct me if my understanding is wrong.

Related

How to restrict single UIViewController in iOS 10 universal app to portrait layout?

I have an iOS 10 universal app (supports both iPad and iPhone). In the application .plist I have specified that the app supports both portrait and landscape mode. Now I would like to restrict a single UIViewController to portrait only mode. That view controller is presented by the same navigation controller that presents other view controllers. What is the best (easiest) way to restrict a single, specific view controller to portrait in iOS 10. (Note that there are lots of published solutions, but as far as I can tell the answer to this problem is is different for different versions of iOS. I only need a solution that supports iOS 10.)
Now I would like to restrict a single UIViewController to portrait only mode. That view controller is presented by the same navigation controller that presents other view controllers
In iOS 10, there is no supported way to do what you're describing. A navigation controller cannot have some of its children in one orientation and other children in another.
The only supported way to have a view controller force a different orientation is to make it a presented view controller (modal), not a pushed view controller in a navigation controller stack.

navigation controller pushViewController transitioning between landscape and portrait views doesn't work?

I'm trying to get navigation between views that support landscape or portrait orientations working using a navigation controller and pushViewController (and IOS6+ code) and have a problem where after pushing a landscape view controller onto the navigation controller stack, the view controller view correctly is in landscape but the device is still in portrait orientation. (imagine an arrow pointing left to right on a landscape screen, here it points from down to up on a portrait screen so the dimensions are correct - it's just the device should be in landscape mode so the arrow points left to right - if that makes sense)
I have a portraitViewController and landscapeViewController that my different sub modes use.
Using the iOS 6 method, The two classes overload
-(BOOL)shouldAutorotate;
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation;
-(NSUInteger) supportedInterfaceOrientations;
appropriately.
I also have my own derived navigationcontroller that overrrides:
-(BOOL)shouldAutorotate;
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation;
-(NSUInteger) supportedInterfaceOrientations;
with the functions returning the same functions of the top view controller (so we're not bound to portrait mode by the top level view controller).
My first problem is that the device doesn't do an orientation refresh when you use pushViewController onto the navigation controller. This is well documented and has been solved up to now by using dismissViewController and presentViewController which forces a device orientation refresh which in turn queries the new view controller about what orientations it supports and switches the device appropriately.
This works but loses transitioning between view controllers (i.e with the new view sliding in from the right of the screen) as the previous view is removed from screen before the next is added and the newly presented view is applied to the entire screen directly.
Because of this, I've been trying to get things working using pushViewController rather than present / dismissViewController. pushViewController works fine when I navigate from portrait to portrait view - the new view slides in nicely - it's when I switch from a portrait to landscape view controller than things break.
Just pushViewController doesn't cause the device to refresh it's orientation and query what the new view would like to use. I've added calls to present / dismissModalViewController before my call to pushViewcontroller to force an orientation check with the new view controller.
* the problem *
This doesn't work however because the view is now in landscape mode but the device is still in portrait mode so the view is at 90 degs to what it should be.
I've tried fixing this by setting the status bar orientation to match the view controller landscape orientation but this causes massive problems when the user manually rotates the device from then on as they aren't in sync. Also in iOS 6, you can't do that if your view controller returns YES from shouldAutoRotate function (calls to setStausBarOrientation are ignored if you control orientation yourself in your view controller) so it took a large hack to do it and it just doesn't feel like the right solution.
To summarise, how can I use a navigation controller & pushViewController (using iOS6) and switch between landscape and portrait views properly? At the moment, I can't get the device to update along with the view so the interface is in landscape but the device is still in portrait. If I try using setStatusBarOrientation to force the device to landscape, things start to go wrong as soon as I manually rotate the screen and it requires such a hack it just can't be the right answer.
thanks!
:-)

Multiple orientation in a single viewcontroller, with UISplitview based application

I have an application which works only on Landscape mode, and the rootViewController of the application window is a UISplitViewController. Now, I want a new viewController to be presented as a modal view controller that support both orientations (landscape and portrait). I have set the supported orientations in plist as Landscape only. However I have set all orientations in the new view controller. But, the orientations in not changing to portrait, may be because of the orientations specified in the plist.
What I basically want, is to have all the views in the application in landscape mode and just a single view in both orientations. Any help is greatly appreciated.
shouldAutorotateToInterfaceOrientation will tell the app to orient or not so what we can do here is have a flag which will tell to auto rotate or not. initially flag is false. but when you present a model view controller set it to true. and as it disappears set it to false again. this may do the trick
you can also refer this

Popping view from UINavigationController changes device orientation

I have an issue issue with the UINavigationController on the iPad. When the app is started in landscape orientation, popping the top view controller from the navigation controller causes the device orientation to turn into portrait and the view displayed slides down when the view that becomes visible and adjusts to portrait orientation. It makes no difference if I initiate the call or if it's done automatically by the back button.
When the app is started in portrait mode and device is turned into landscape later I don't see the same behavior and everything works fine.
Any pointers to where and what to look for to find the cause or workaround suggestions to prevent this from happening are welcome.
Thank you,
Oz
One of the view controllers in your UINavigationController's view hierarchy is not overriding the shouldAutorotateToInterfaceOrientation: method, which by default only returns YES for UIInterfaceOrientationPortrait – so, when that particular view controller comes to the front, it auto-rotates to an orientation it supports.
You can fix this by finding the offending view controller and adding the code below:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Overriden to allow any orientation.
return YES;
}

UISplitViewController set in portrait mode

In ipad app I want to set UISplitViewController method set in portrait mode.(i.e Like Settings application in ipad)
I have created a SplitViewbased application .When i run the application in portrait mode it doesn't show the splitview when i change the orientation into landscape it shows the splitview.In portrait mode also there is a toolbar button name "Root List" When i click the button it shows popover view to split view.
I want to show splitview in portrait mode with two separte views each has navigation controller.
Can anyone help me ?
Thanks in advance......
I doubt that you will be able to do this with the UISplitViewController, you would need to build your own custom version of it which mimicked most of the normal behavior, but kept the table showing in portrait mode.
As of iOS 5 the UISplitViewController will work in portrait mode. Look at the documentation for the delegate method:
- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
You should definitely have a look at Matt Legend's MGSplitViewController.
I think your looking for APSplitViewController

Resources