UISplitViewController - 调整细节视图的大小

时间:2013-03-08 12:55:56

标签: ios objective-c ipad cocoa-touch uisplitviewcontroller

我在我的iPad应用程序中使用了UISplitViewController,我真的不喜欢弹出视图滑入的方式并覆盖屏幕的三分之一并在纵向模式下保持不变。

当弹出窗口滑入视图时,我正在调整Detail视图的大小,除了顶部的导航栏保持整个宽度(并且在弹出窗口下面)之外,这样可以正常工作。 我基本上希望它在横向模式下看起来像。

这是我用来调整视图大小的代码:

UIViewController *masterView = [svc.viewControllers objectAtIndex:0];
UINavigationController *detailNavView = [svc.viewControllers objectAtIndex:1];
UIViewController *detailView = [detailNavView.viewControllers objectAtIndex:0];

detailView.view.frame = CGRectMake(masterView.view.frame.size.width, 0, detailView.view.frame.size.width - masterView.view.frame.size.width, detailView.view.frame.size.height);

我尝试设置detailNavView.view.frame但没有任何反应。

如何调整整体详细视图的大小,包括导航栏?

2 个答案:

答案 0 :(得分:4)

嗯,我认为UISplitViewController并不是那么灵活。这只是苹果公司决定的事情:在风景中分开,在肖像中流行。详细视图占据了该控制器的整个视图(即主视图),因此您必须将其定义为另一种控制器的主视图的子视图,以便像这样操纵其导航栏。

自定义纵向视图的唯一解决方案是实际取消Apple版本的拆分视图控制器并自行滚动。

在选择项目并在详细视图中显示后,最实用的解决方案可能就是关闭popover

答案 1 :(得分:0)

答案是UISplitViewController's preferredPrimaryColumnWidthFraction属性 - 将其设置为0.0-1.0以指定主视图占用的相对间距。