在Xcode5.1中构建一个项目,该项目在Xcode 6 GM中进行了修改,用于测试旧版本的iOS

Kyl*_*KIM 4 iphone storyboard ios xcode5 xcode6

我的应用程序至少使用Xcode5.1故事板支持iOS6.

在Xcode 6 GM中完成了几项工作之后,我需要在iOS 6 Simulator上进行测试.Xcode 6 GM没有iOS 6模拟器.所以,我在Xcode 5.1中打开了我的项目.

但它无法建立.我甚至无法在Xcode5.1中打开故事板.

它在导航窗格中说

Main_iPhone.storboard
Interface Builder Storyboard Compiler Error
The document"(null)" requires Xcode6.0 or later.
Run Code Online (Sandbox Code Playgroud)

当我点击它时,会出现提示

The document "Main_iPhone.storyboard" requires Xcode 6.0 or later.
This version does not support constraints to layout margins. Open this document with Xcode 6.0 or later.
Run Code Online (Sandbox Code Playgroud)

Mar*_*ton 16

使用Xcode 6添加几乎任何类型的布局约束都将呈现与Xcode 5.1不兼容的storyboard(或.xib文件).如果您需要在Xcode 5.1中使用Xcode 6.0修改的故事板,则必须删除所有基于"边距"的约束.

执行这些步骤以使Xcode 6修改故事板,并使用Xcode 5再次编译:

使用Xcode 6:

  1. 在故事板文件检查器的Interface Builder文档部分中将"打开"设置为Xcode 5.1 .设置此项后,如果存在任何不兼容的边距限制,Xcode 6.0将生成警告.

    相对于8.0之前的iOS版本上的布局边距的布局属性

  2. 识别边距约束的一种简单方法是在文本编辑器中打开故事板(最好是在磁盘上更改文件时自动刷新的故事板).搜索单词"Margin"并查找如下所示的行:

    <constraint firstItem="gZc-ET-UKM" firstAttribute="leading" secondItem="MMQ-IT-qOo" secondAttribute="leadingMargin" constant="-8" id="H3i-wo-2Mm"/>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 需要删除或更新这些约束以直接基于超级视图而不是边距.通过在大纲视图中选择约束,然后转到大小检查器并在第一个项目或第二个项目设置的下拉菜单中取消选中"相对于边距"选项,可以更新约束而不是删除约束.一旦你这样做,你还需要添加一个与边距匹配的常量(通常为8).

    相对于保证金图像

当您删除或更新每个约束时,您应该在文本编辑器中看到故事板文件更新并删除单词"Margin".删除所有不兼容的约束后,警告将消失,此行将从故事板文件中消失:

    <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
Run Code Online (Sandbox Code Playgroud)
  1. 如果删除了约束,最后一步是在Xcode 5中打开项目并重新创建它们.