问题
I would like obtain a SplitView on my iPad application with my left menu in a portrait orientation such as iPad settings. For now in portrait orientation I have a content view in full screen and I have a button at NavigationBar which includes a popover with my left menu.
回答1:
This is the magic you need:
This method is in UISplitViewControllerDelegate, available on iOS 5.0
- (BOOL)splitViewController: (UISplitViewController*)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);
{
return NO;
}
回答2:
You should definitely have a look at Matt Gemmell's MGSplitViewController.
MGSplitViewController is an open source replacement for UISplitViewController, with various useful enhancements.
回答3:
Unfortunately, it's an undocumented method (i.e. private API).
[splitViewController setHidesMasterViewInPortrait:NO];
I think you need to create a custom view controller containing a table view (as the master controller) and another generic subview (as the detail controller) to simulate this.
回答4:
The easiest way to get the effect you want may be to just not use a UISplitView
. Instead, just create a normal view, put a table view on its left side, your detail view on the right side, and then set the autosizing stuff appropriately so that everything looks right in both portrait and landscape.
回答5:
Since shouldHideViewController
is deprecated in iOS8, you will need to use this instead (Swift):
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
回答6:
As ccwasden stated, shouldHideViewController
is deprecated as of iOS8. In Objective-C, use...
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible;
回答7:
some people asked me the same question on our blog and I found a solution for that. You will find it at the end of my blog post Your first split view controller | Seaside.
In general, all you have to do is to create a subclass of UISplitViewController
and override the method willAnimateRotationToInterfaceOrientation: duration:
and adjust your master and detail views when the interface orientation will change to portrait mode.
Cheers, Andreas
回答8:
In Swift:
splitViewController.preferredDisplayMode = .allVisible
来源:https://stackoverflow.com/questions/2631672/ipad-splitviewcontroller-with-menu-in-portrait-mode-like-settings-app