2012-04-16 179 views
5

我正在使用Xcode 4.2,并且正在开发一个应用程序,我希望菜单屏幕使用分割视图。实际上,我需要Split View Controller的一部分是将一些菜单选项分成左窗格和右窗格。我希望能够为主视图控制器和详细视图控制器设置自定义大小,但似乎没有任何工作适合我。我试着代码更新为每个视图控制器的帧大小,如:在拆分视图控制器中调整主视图控制器和详细视图控制器的大小?

[self.view setFrame:CGRectMake(0, 0, 768, 502)]; 
在viewDidLoad中功能

,但似乎并没有影响到任何东西。

有没有一种方法来设置分割视图控制器的主视图控制器和详细视图控制器的自定义大小,而无需在AppDelegate.m文件中实例化视图控制器?我希望能够编辑故事板中的每个视图控制器,因为它们是带有许多按钮等的菜单屏幕。

回答

10

编辑: 在iOS 8+中,可以通过指定minimum/maximumPrimaryColumnWidth属性或preferredPrimaryColumnFraction来更改相对宽度。

下面的答案仍然是正确的iOS < 8:


你不能改变大小的拆分视图控制器。

在这里看到:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

“的UISplitViewController类是管理的信息的两个窗格的容器视图控制器的第一窗格具有320点和可见窗口高度匹配的高度的固定宽度的第二。窗格填充剩余空间。“

+0

嗯,OK,感谢。有没有其他解决方法可以使用?我真正需要的是具有两个垂直窗格的视图,我可以为每个视图选择一个大小。 – generaltsow 2012-04-17 00:28:35

+0

您可以用两个视图制作一个大视图,并在代码中分配每个视图。 – 2012-04-17 01:39:56

4

使用MGSplitViewController。它提供了类似于UIViewController的API,但提供了额外的功能,比如分割位置,这就是你所需要的。

+0

这个视图控制器有没有更新的版本?它似乎过时并且不受支持。但是,它确实在iOS7上运行。 – fatuhoku 2014-03-07 16:18:38

+0

@fatuhoku我不知道,我停下了一个'MGSplitViewController'并为'UISplitViewController'构建了自己的包装,这使我能够实现我所需要的。说实话,如果我现在必须做一个分割视图控制器,我会做一个新的自定义控件,而不是使用'MGSplitViewController',因为使用父/子视图控制器控制很容易完成。 – 2014-03-07 17:03:17

+0

是的 - 使用容器视图对我来说一直工作到现在太实际了。最后我也没有使用MGSplitViewController。 – fatuhoku 2014-03-11 12:27:24

-1
- (CGFloat)splitView:(NSSplitView *)splitView constrainMinCoordinate:(CGFloat)proposedMinimumPosition ofSubviewAt:(NSInteger)dividerIndex; 
{ 

    return proposedMinimumPosition + 238; 
} 

- (CGFloat)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(CGFloat)proposedMaximumPosition ofSubviewAt:(NSInteger)dividerIndex; 
{ 
    return proposedMaximumPosition - 200; 
} 

上述委托方法之前添加[splitView addDelegate:self];

+0

这些方法适用于Mac,并带有NSSplitViewDelegate。 OP没有指定Mac或iOS应用程序,但是他们有一个标签,里面写着iOS的uisplitviewcontroller。 – cnotethegr8 2014-03-11 06:10:56

相关问题