2013-03-29 34 views
1

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

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

我已经通过谷歌走了,发现这种情况发生时Use AutoLayout在厦门国际银行进行检查。

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

但当我在retina4英寸测试应用程序时,我不克从视图的顶部开始,视图的内容从中间开始。我的意思是说,设计是不一样的nonretina和视网膜测试。因此,我保留'Use AutoLayout'checked状态。

我能做些什么让我的两个条件满意吗?我需要使它与模拟器的所有版本兼容...

任何帮助woud是可观/心存感激......

+0

如果你想iOS6的前使用自动布局在这种情况下,应用程序会崩溃你不能IOS 6之前使用自动布局。 –

回答

0

对于iPhone 5的4英寸显示屏,您需要第三个默认图像[email protected]。否则,这些视图将被置信箱。要支持iOS6之前的iOS版本,您需要禁用自动布局选项,但这意味着必须根据屏幕大小手动在代码中手动更新视图,或者正确设置自动识别掩码。

+0

我已经为iphone 4 inch添加了[email protected]。请你告诉我在哪里可以设置正确的自动调整掩码设置。我是否需要根据屏幕大小编写每段代码分隔符。我的意思是我需要分别编写用于在iphone 4和iphone 5中创建相同文本框的单独代码。 – Aaradhya

+0

您只需要更新屏幕大小以及视图或tableView等大型元素。当然,如果您需要某些特定行为(如屏幕底部的按钮),您也必须更新其框架。 –

+0

关于自动调整掩码:检查大小检查器和矩形的红线(Autoresizing和红色动画矩形的例子) –

0

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

所以它是一个选项,你可以使用,如果你只支持iOS 6.0及更高版本

0

可加载不同XIB的的viewController。对于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. 
+0

我开发的iPad和iPhone.In iPhone我已经编写的代码,如果它是iPhone 3.5和iPhone 4 BCOZ I在我的应用程序中有一个UITabbar我需要根据iPhone屏幕大小的高度单独调整它,但加载了与自动布局相同的xib checked.So现在有两个xib(一个用于iPhone,一个用于iPad)。可以告诉我应该我现在拿3个xib(iPad,iphone 3.5,iphone 4) – Aaradhya

+0

是的,正好3个xib的 –

+0

嘿,我有一个小小的疑问。如果我取消选择“使用AutoLayout”用于iphone 4英寸显示屏,并且在同一个xib中处理弹簧和支柱而不创建新的xib,那么该怎么办?因为当我在iphone5中取消选中它并测试它的工作时,因为我制作了所有弹簧和支柱(左,右,底部,顶部)(宽度,高度),并且视图不从中间开始。它正确对齐。我是否还需要单独使用xib? – Aaradhya

相关问题