我在我的应用中为UISplitViewController
和iPhone
实施了iPad
的子类。当我将设备从Landscape
转换为Portrait
方向时,会调用标题中提到的方法。除非我在iPhone 6 Plus上运行应用程序,否则它的效果非常好。为什么不在那里调用这种方法?
如何使此方法有效?
当我在iPhone 6 Plus
上启动应用时,两个方向的一切都很好。但问题是我将iPhone 6 Plus
从Landscape
轮换到Portrait
。我的导航控制器无法按预期工作。
这就是我的意思:
iPhone 5s肖像
我选择位置时的iPhone 5s纵向
iPhone 5s横向选定位置
当我从Landscape旋转到Portrait时,iPhone 5s
iPhone 6 Plus肖像
我选择位置时的iPhone 6 Plus纵向
具有所选位置的iPhone 6 Plus横向
从横向旋转到纵向时的iPhone 6 Plus this is a problem
,因为我的方法splitViewController:collapseSecondaryViewController:ontoPrimaryViewController:
未被调用。当时UINavigationController
无效。当我选择位置时,没有任何事情发生。
class PBOSplitViewController: UISplitViewController, UISplitViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
delegate = self
}
func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController!, ontoPrimaryViewController primaryViewController: UIViewController!) -> Bool {
return false
}
}
我在Storyboard中设置了我的SplitViewController。
答案 0 :(得分:5)
iPhone 6+拥有更大的屏幕,在某些方面被视为iPad。 iPhone 6+上的分割视图控制器将尝试像在iPad上一样显示主窗格和细节窗格,除非应用程序处于"缩放显示模式"。
NSHipster有一篇文章更详细地解释了这一点:http://nshipster.com/uisplitviewcontroller/