【发布时间】:2012-12-14 22:58:01
【问题描述】:
我想在我的 iPAD 应用程序上支持横向和纵向方向,该应用程序使用情节提要,而不涉及 iOS6+ 上的 Auto Layout 和 iOS 5 及更早版本上的 Auto Resizing 的复杂性(因为该应用程序将同时支持这两者iOS 5 & 6 所以这里不允许使用AutoLayout),我认为作为解决方案的起点如下:
创建两个独立的故事板:MainStoryboard-Portrait & MainStoryboard-Landscape,当当前视图控制器(我们将其命名为 FirstViewController)是纵向的,并且用户将设备旋转到横向时,我 instantiate 来自一个新的 FirstViewController MainStoryboard-Landscape 故事板,反之亦然,当用户旋转回纵向时。我在FirstViewController.m 的willRotateToInterfaceOrientation 方法中做了类似的事情:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard-Landscape" bundle:[NSBundle mainBundle]];
FirstViewController *VC = [storyboard instantiateViewControllerWithIdentifier:@"VC1"];
self.view = VC.view;
但在 iOS6+ 上会发生以下崩溃:A view can only be associated with at most one view controller at a time!,在 iOS5 上也尝试过不会崩溃但旋转无法正常工作:窗口边界旋转但视图本身保持原样。
如何让它同时在 iOS 5 和 6 上运行?或者如果有其他更好的方法,请提供一个工作代码示例,我将奖励您 50 分。
【问题讨论】:
标签: objective-c ios xcode ipad storyboard