ios - iOS 设备旋转时如何处理 View 交换

标签 ios uiview orientation

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

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

总而言之,作者能够在检测到设备旋转时指向 XIB 文件中的新顶级 View ,从而生成横向和纵向的自定义 View 。

因此,我采用了复杂的 View 层次结构(许多按钮、 slider 、 View 中的 View ),复制了顶层的所有内容来创建横向 View 。然后为横向 View 创建自定义布置。在我的代码检测横向方向的方法中,我的代码在检测纵向时指向横向层次结构和纵向的顶部。

除了横向层次结构中的所有 IBOutlet(UIView、UIButton 等)仍然引用纵向 View 层次结构中的等效对象之外,此方法有效。我在运行时对这些 UI 元素进行了很多特殊处理,因此我需要 IBOutlet 而不仅仅是 IBActions。我发现我在横向 View 中复制的 UI 元素可以指向相同的 IBActions,但它们不能与纵向层次结构中的元素共享 IBOutlet。

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

最佳答案

这是一种可能适合您的方法。

如果您在需要交换横向 View 时加载横向nib,则可以将 View Controller 作为nib文件的所有者传递,nib加载器将根据中的连接覆盖 View Controller 的 socket 风景 Nib 。

当您需要再次交换纵向 View 时,加载纵向 Nib 并将 View Controller 作为文件所有者传递。 Nib 加载器将再次覆盖 View Controller 的 socket ,这次基于纵向 Nib 中的连接。

您应该在第一次需要 Nib 时为每个 Nib 创建一个 UINib 对象,并保留它们以加快后续旋转的加载速度。

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

相关文章:

iphone - ios中的过滤器数组检查多个属性

ios - 正确使用 intrinsicContentSize 和 sizeThatFits : on UIView Subclass with autolayout

ios - 在 UIView (Swift) 中绘制圆形切口

iphone - 如何制作漂亮的iOS界面?

objective-c - iOS 8 - 即使在切换控件后的纵向模式下,旋转也会使状态栏消失

数据重新加载时,iOS Collection View 向上移动

ios - 使用ios 64bit架构的Zlib解压方法警告

android - 当我在解锁前更改锁定屏幕的方向时,应用程序被杀死

Swift 3 如何锁定方向

ios - 循环字典中的特定键以获取值