因此,我按照以下教程创建与设备方向相关联的自定义视图:

http://www.theappcodeblog.com/2011/03/30/orientation-change-tutorial-change-the-view-when-the-orientation-changes/

总之,作者可以通过在检测到设备旋转时指向XIB文件中的新顶级视图来生成横向和纵向方向的自定义视图。

因此,我采用了复杂的视图层次结构(许多按钮,滑块,视图内的视图),在顶层复制了所有内容以创建横向视图。然后为景观视图创建自定义布置。在我的代码检测横向方向的方法中,当检测到肖像时,我的代码指向横向层次结构和肖像的顶部。

这行得通,除了横向层次结构中的所有IBOutlet(UIView,UIButton等)仍在纵向视图层次结构中引用其等效对象。在运行期间,我对这些UI元素做了很多特殊处理,因此我需要IBOutlets而不是IBActions。我发现我在横向视图中复制的UI元素可以指向相同的IBAction,但是它们不能与纵向层次结构中的IBOutlet共享。

我是否必须复制所有对象并让我的代码管理所有内容(弄清楚要使用哪些对象)?

最佳答案

这是一种适合您的方法。

如果您在需要在横向视图中交换时立即加载横向笔尖,则可以将视图控制器作为nib文件的所有者传递,并且nib加载程序将根据横向笔尖中的连接覆盖视图控制器的出口。

并且当您需要再次交换人像视图时,请加载人像笔尖并将视图控制器作为文件的所有者传递。笔尖加载器将再次覆盖您的视图控制器的插座,这一次是基于肖像笔尖中的连接。

您应该在第一次需要笔尖时为每个笔尖懒惰地创建一个UINib对象,并保持它们不变以加快后续旋转时的加载速度。

关于ios - 设备在iOS上旋转时如何处理交换 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9426318/

10-13 06:17
查看更多