我正在尝试开发一个基于 splitView 的 iPad 应用程序,它可以在每个方向上显示拆分界面。我已尝试按照本教程中的说明对 UISplitViewController 类进行子类化,但它不起作用。_hidesMasterViewInPortrait = (hidden) ? 0 : 1;
正如上述博客中的一条评论所建议的那样,我尝试创建一个要设置的类别,但没有任何效果。
任何人都可以在不使用任何第三方框架或类的情况下帮助我找到解决方法吗?
在 iOS8 (Swift) 中,使用这个:
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
在实现 UISplitViewControllerDelegate 协议的 viewController 类中(通常是 DetailViewController),添加如下代码。
- (BOOL) splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation {
return NO;
}
根据文档,这从 iOS 5 开始就可用。
要查看它的实际效果:
-打开 Xcode。
- 创建一个新的主/从应用程序。
- 将上述代码添加到 DetailViewController
- 在 iPad 模拟器中运行。
在您自己的项目中,您需要将以下行添加到 detailViewController 的 viewDidLoad 方法中。
self.splitViewController.delegate = self;
您所描述的内容听起来像是 Apple 的设置应用程序(在 iPad 上)。我的直觉是这不是 UISplitView。它只是一个包含两个表视图的视图。设备旋转时手动修复布局。换句话说,如果您不想要 UISplitView 的功能,那么您根本就不需要 UISplitView。
编辑 2011 年 12 月 19 日:在 iOS 5 中,问题基本解决了,因为您现在可以定义自己的容器视图控制器,而且您可以防止在拆分视图中关闭左视图。
我不确定标准 SplitViewController 是否可行,但您可以使用自定义的
我从来没有强制 SPlitViewController 这样做,但由于您需要为这两个部分创建控制器,您可以重用这些控制器以按照您想要的方式显示内容。
您可以继承 UISplitViewController,然后覆盖以下方法:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval) duration
你好我的第一篇文章,我希望能有所帮助:
这是它的工作方式
[splitViewController setHidesMasterViewInPortrait:NO];
你不能让 Apple 的 splitViewController 表现得像那样(并进入应用商店)。您需要编写自己的容器视图控制器。请参阅 Apple 的文档
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