25

如果您在此Apple Developer Page处向下滚动一下,您会看到“创建一个交替的横向界面”部分。这里描述的基本方法是在方向改变时呈现不同的NIB文件作为模态视图。我正在使用故事板功能,所以我没有NIB。如何在这种情况下加载不同的“场景”?iPhone Storyboard:纵向和横向的不同场景

除此之外,我使用Tab Bar控制器,我不想显示模态视图。我只想用设计了界面构建器的横向视图替换当前的纵向视图,并保留我的标签栏。 Storyboard的方式是实现“创建一个替代景观界面”的任务是什么?谢谢。

回答

19

将视图控制器添加到故事板时,它带有视图。调用该容器视图。将两个视图添加到容器视图:纵向视图和横向视图。使用尺寸检查器适当地设置纵向视图和横向视图的尺寸。根据需要为应用程序添加按钮,更多视图,标签或其他内容。然后当方向变化时隐藏一个视图并显示另一个视图。

+1

有趣的方法。将尝试。谢谢 – Korbi 2012-01-15 14:31:01

+5

如果您使用IBOutlets,那么只能分配给一个视图。 – Paranaix 2012-02-13 08:31:17

+1

@Paranaix我可能不完全理解你的评论。原始问题提出了对横向和纵向模式具有不同界面的要求。如果您正在为相同的接口寻找不同的布局,这是另一个问题。也许你应该提出一个全新的问题。 – 2012-02-13 13:42:09

2

您可以设置导航控制器和一个主视图。然后,您可以使用模板视图显示纵向和横向布局(2个附加视图)。

您将需要在主视图上设置控件,并确保每个控件都有唯一的标签。您的主视图将不会被使用,您可以将控件复制到两个模板视图,并根据您希望每个视图的外观进行设置。这样做的好处是每个视图都会保留其标签,这成为此实现中非常重要的一部分。

为此,您使用混合方法来编写一些UI代码和使用Interface Builder。获得两个模板设置后,为每个模板创建一个唯一标识符。你将不得不编写一些逻辑来处理视图及其子视图。根据您选择的模板返回这些集合的递归方法。

根视图控制器实现中的核心逻辑将需要检查isPortrait,并基于此,您将希望基于标识符加载正确的视图。

试验这个概念,看看它是否适合你。不使用具有独特控件的两个独立视图(而不是具有相同标签的共享方法)的主要好处是可以保持对原始子视图的访问。您在视图控制器中定义的任何实例变量都指向文本字段,标签等等,不管使用哪个模板视图,都会继续这样做。当数据结构保持不变时,这保持了模型,视图和控制器方法。

使用此方法,您仍然可以最大限度地使用界面构建器,并为每个视图布局模板,同时仍然可以灵活地编写一些自定义UI代码(如果您愿意)。仅使用接口构建器有时会受到一些限制,并且基于方向编写自定义代码会使您陷入一些乏味的工作。

希望这有助于一些。

0

您可以制作一个xib文件,其中包含2个uiviews,一个前景肖像和一个景观。 指定为文件的xib的所有者,与故事板中的视图相同的viewcontroller。 在viewDidLoad中加载xib文件,并为纵向或横向添加appropriete视图。

所以,如果你有很多viewcontrollers故事板,你可以设置只在你有兴趣改变方向的viewcontrollers两种可能性(纵向或横向视图)。

我用这个解决方案,做工非常精细!