【问题标题】:AutoLayout for viewcontroller's xib?视图控制器的 xib 的自动布局?
【发布时间】:2013-03-29 07:20:57
【问题描述】:

我对@9​​87654321@ 的使用感到困惑。我不知道什么时候使用它,什么时候不使用它。我在 Xcode 4.5 中开发一个应用程序,当我在以前版本的模拟器(4.3,5.0)上测试它时)etc 应用程序因此异常而崩溃“

Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint "

我浏览了谷歌,发现在 xib 中检查Use AutoLayout 时会发生这种情况。

但是当我取消选中这个 Use Autolayout 时,我没有得到任何异常。

但是当我在retina4英寸中测试应用程序时,我没有从顶部开始获得视图的内容。它是从中间开始的。我的意思是说在非视网膜和视网膜测试时设计是不一样的。所以为了这个目的我将'Use AutoLayout' 保持在checked 状态。

我该怎么做才能同时满足我的两个条件?我需要让它与所有版本的模拟器兼容...

任何帮助都将不胜感激/感激...

【问题讨论】:

  • 在 ios 6 之前你不能使用自动布局。如果你想在 ios6 之前使用自动布局,那么应用程序会崩溃。

标签: iphone ipad xcode4.5 autolayout


【解决方案1】:

对于 iPhone 5 的 4 英寸显示屏,您需要第三张默认图像 Def​​ault-568h@2x.png。否则,视图将被加装。要支持 iOS6 之前的 iOS 版本,您需要禁用自动布局选项,但这意味着,您必须正确设置自动调整掩码或/除了根据屏幕大小在代码中手动更新视图。

【讨论】:

  • 我已经为 iphone 4 英寸添加了 Default-568h@2x.png。你能告诉我在哪里可以正确设置自动调整掩码吗。我需要编写每一段代码吗separatley 取决于屏幕大小。我的意思是我是否需要编写单独的代码来分别在 iphone 4 和 iphone 5 中创建相同的文本框。?
  • 您只需要更新屏幕尺寸和那些大元素,如视图或表格视图。当然,如果您需要某些特定行为(例如屏幕底部的按钮),您还必须更新它们的框架。
  • 关于自动调整掩码:检查大小检查器和带有红线的矩形(自动调整大小和带有红色动画矩形的示例)
【解决方案2】:

使用自动布局是 Apple 提供的一个选项,用于从 iOS 6.0 开始自动设置 nib 文件的布局。因此,如果您要为低于该版本的 iOS 版本提供支持,操作系统将无法找到它,从而导致崩溃。

因此,如果您要支持仅 iOS 6.0 及更高版本,则可以使用此选项。

【讨论】:

    【解决方案3】:

    您可以为您的 viewController 加载不同的 XIB。对于 3.5 英寸,请按照以下步骤操作

    1. Select your xib, first unchecked auto-layout.
    2. Select View object and in its property window, change size property and set it to Retuina 3.5 full screen.
    3. Make changes in your code to load your XIB's for different devices.
    

    【讨论】:

    • 我正在为 ipad 和 iphone 开发。在 iphone 中,如果是 iphone 3.5 和 iphone 4 bcoz 我已经编写了代码,我的应用程序中有一个 UITabbar 我需要根据高度单独调整它iphone 屏幕尺寸,但加载了相同的 xib 并检查了自动布局。所以我现在有两个 xib(一个用于 iphone,一个用于 iPad)。你能告诉我现在应该拿 3 个 xib(iPad、iphone 3.5、iphone 4)
    • 嘿,我有一个小疑问。如果我取消选中 iphone 4 英寸显示器的“使用自动布局”并在同一个 xib 中处理弹簧和支柱而不创建新 xib 怎么办?因为当我取消选中它并进行测试时当我在 iphone4 英寸中检查 iphone5 时它的工作原理也是一样的,因为我已经制作了所有的弹簧和支柱(左、右、下、上)(宽度、高度),并且视图不是从中间开始的。它正确对齐.我现在还需要单独购买xib吗?
    • 不,如果您处理控件的位置,您将不需要不同的 xib。
    猜你喜欢
    • 2013-07-16
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    相关资源
    最近更新 更多