iPad SplitViewController with menu in portrait mode like settings app

坚强是说给别人听的谎言 提交于 2020-01-09 04:17:09

问题


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

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