我正在尝试开发一个基于splitView的iPad应用程序,它可以在每个方向显示拆分界面。我已经尝试了在this教程中给出的UISplitViewController类的子类化,但它不起作用。我尝试创建一个类别来设置_hidesMasterViewInPortrait = (hidden) ? 0 : 1;
,正如上面博客中的一条评论所示,但没有任何效果。
任何人都可以帮助我找到解决方法,而不使用任何第三方框架或类吗?
答案 0 :(得分:13)
在实现UISplitViewControllerDelegate协议(通常是DetailViewController)的viewController类中,添加以下代码。
- (BOOL) splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation {
return NO;
}
据Docs称,这已经从iOS 5开始提供。
要看到它的实际效果:
- 打开Xcode。
- 创建一个新的主/细节应用程序
- 将上面的代码添加到DetailViewController中
- 在iPad模拟器中运行。
在您自己的项目中,您需要将以下行添加到detailViewController的viewDidLoad方法中。
self.splitViewController.delegate = self;
答案 1 :(得分:12)
在iOS8(Swift)中,请使用:
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
答案 2 :(得分:3)
您所描述的内容听起来像Apple的设置应用(在iPad上)。我的直觉是,这不是UISplitView。它只是一个包含两个表视图的视图。设备旋转时手动修复布局。换句话说,如果您不想要UISplitView的功能,那么根本就不需要UISplitView。
编辑12/19/2011:在iOS 5中,问题基本上已经解决,因为您现在可以定义自己的容器视图控制器,另外还可以防止在拆分视图中解除左视图。
答案 3 :(得分:2)
我不确定标准的SplitViewController是否可行,但你可以使用自定义的
答案 4 :(得分:1)
你可以继承UISplitViewController,然后覆盖以下方法:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval) duration
答案 5 :(得分:0)
我从未实现强制SPlitViewController执行此操作,但由于您需要为这两个部分创建控制器,您可以重复使用这些控制器以您希望的方式显示内容。
答案 6 :(得分:0)
你好我的第一篇文章,我希望能提供帮助:
这是它的工作方式
[splitViewController setHidesMasterViewInPortrait:NO];
答案 7 :(得分:0)
你不能拥有Apple' splitViewController的行为与此类似(并进入应用程序商店)。您需要编写自己的容器视图控制器。 See Apple' docs
答案 8 :(得分:0)
you just need to add this delegate method to your detail view manager
- (BOOL)splitViewController:(UISplitViewController *)svc
shouldHideViewController:(UIViewController *)vc
inOrientation:(UIInterfaceOrientation)orientation
{
// Hide split view in portrait mode
//return UIInterfaceOrientationIsPortrait(orientation);
// Show Split view in portrait mode
return NO;
}
//vKj