Ios7 UISplitViewController iOS 7向后兼容性

Ios7 UISplitViewController iOS 7向后兼容性,ios7,swift,ios8,uistoryboard,uisplitviewcontroller,Ios7,Swift,Ios8,Uistoryboard,Uisplitviewcontroller,在Xcode 6中,我正在构建一个具有UISplitViewController的通用应用程序。在较小的iOS 8设备上,它看起来像一个正常的主/细节关系,但在较大的设备上,您可以同时看到主视图和细节视图 这在iOS 8上运行良好,但我也需要它来支持iOS 7。iOS 7仅对iPad支持UISplitViewController,而我目前在iPad和iPhone上都使用它 我怎样才能避开这个问题呢?事实上,我发现如果您使用SDK 8(Xcode 6)构建,UISplitViewControlle

在Xcode 6中,我正在构建一个具有UISplitViewController的通用应用程序。在较小的iOS 8设备上,它看起来像一个正常的主/细节关系,但在较大的设备上,您可以同时看到主视图和细节视图

这在iOS 8上运行良好,但我也需要它来支持iOS 7。iOS 7仅对iPad支持UISplitViewController,而我目前在iPad和iPhone上都使用它


我怎样才能避开这个问题呢?

事实上,我发现如果您使用SDK 8(Xcode 6)构建,UISplitViewController也可以在运行iOS 7的iPhone上运行;默认示例项目可以在运行时附带以下注意事项:

  • 主视图和局部视图控制器直接由拆分视图控制器控制

  • 视图控制器数组仅包含对主视图控制器的直接引用;局部视图控制器不在那里

  • 上述操作的直接结果是,无法在主视图和详图视图控制器内显示工具栏,因为这些工具栏是使用导航控制器控制的

  • 当您没有实现任何新的拆分视图代理协议方法时,您可能会注意到详图视图控制器以纵向模式显示;他有这个问题的答案

顺便说一句,从我的简短实验中,我发现iOS 7和iOS 8的自动布局指南在细节视图中都有点不稳定;顶部或底部布局指南的对齐必须分别调整为-64和-44


在iOS 7.1.2上用iPhone4S测试了上述内容,正如Jack所说,这是可能的,但我不确定你是否能从代码中完成。但是,在使用情节提要时,我也遇到了一个问题(获得相同的“仅在UIUserInterfaceIdiomPad下运行时受支持”异常)。经过多次尝试,我发现这是因为我使用的是一个旧的xcode导入项目,并且没有为情节提要启用使用大小类复选框。启用该功能后,xcode升级了该项目,效果良好

我还必须进行一些调整,以处理使用导航控制器而不是分割视图控制器的情况。特别是,在默认的xcode split view controller项目中,如果我更改为prepareForSeque(),我必须执行以下操作:


我也有同样的问题。在UISplitViewController委托中,添加对旧委托方法的引用

///
/// Used by iOS 7 iPad
///
- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
    return NO;
}

这样做使得在iOS 7 iPad上可以像在iOS 8中一样同时显示主界面和细节

我不确定你到底想要什么…
[[UIDevice currentDevice]systemVersion]
听起来太简单了。)@PhillipMills那么在AppDelegate中,我必须根据版本在两个故事板之间切换?嗯,我使用的是Xcode6.1、SDK 8.1、iphone 4s模拟器7.1。我知道,
UISplitViewController*split=[UISplitViewController alloc]init]
I get
UISplitViewController只有在UIUserInterfaceIdiomPad下运行时才受支持
有什么建议吗?@mackworth我想他们只有在使用界面生成器时才使它兼容:)啊哈;这就解释了。谢谢
///
/// Used by iOS 7 iPad
///
- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
    return NO;
}