用于viewcontroller的xib的AutoLayout?

时间:2013-03-29 07:20:58

标签: iphone ipad xcode4.5 autolayout

我对AutoLayout的使用感到困惑。我无法理解何时使用它以及何时不使用。我在Xcode 4.5中开发应用程序以及在previus版本的模拟器上进行测试时(4.3) ,5.0)等应用程序崩溃与此异常“

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

我已经浏览过Google,并发现在xib中检查Use AutoLayout时会发生这种情况。

但是当我取消选中此Use Autolayout时,我没有任何例外。

但是当我在视网膜4英寸测试应用程序时,我从顶部开始看不到视图的内容。它从中间开始。我的意思是说在测试nonretina和retina时设计是不一样的。所以为此目的我已将'Use AutoLayout'保持在checked州。

我能做些什么来满足我的条件?我需要让它与所有版本的模拟器兼容......

任何帮助都应该感激/感激......

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

因此,如果您支持仅适用于iOS 6.0及以上版本,则可以使用此选项。

答案 2 :(得分:0)

您可以为 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.