【问题标题】:Backward compatibility of Storyboards from Xcode 6 to Xcode 5 + Support iOS 7 in Xcode 6从 Xcode 6 到 Xcode 5 的 Storyboard 向后兼容 + 在 Xcode 6 中支持 iOS 7
【发布时间】:2014-10-16 11:21:55
【问题描述】:

Xcode 6 下对我的项目进行一些更改后,我无法从 Xcode 5 打开storyboard 文件(和构建项目)。

由于无法将应用程序从 Xcode 6 分发到 AppStore,而它处于测试阶段 - 我必须在 Xcode 5 下构建应用程序。

有什么方法可以使情节提要与 Xcode 5 向后兼容? 我在故事板文件的标题中找到了这个字符串:

<capability name="Constraints with attributes relative to the layout margin" minToolsVersion="6.0"/>

我想,它需要删除或编辑一些新的键,新的 Xcode 6 使用,但无法检测到哪个键。

(恢复提交是非常不可能的,因为有很多变化。)


更新:

Xcode 6 中出现了另一个问题 - 它添加了基线约束,这在 iOS 7 中不可用,并且会导致崩溃。 (Xcode 甚至不总是突出显示此警告!) - 要修复它,请参阅我的答案,如何删除 baseline 属性。

【问题讨论】:

    标签: xcode storyboard xcode5 xcode6 xcode-storyboard


    【解决方案1】:

    在编辑器中打开您的故事板。右键单击>在编辑器中打开。复制您的 ui xml,省略标题,您可以在其中找到版本和情节提要 ID。

    接下来,将您的 xml 内容粘贴到您的 xcode 5 故事板文件中。

    【讨论】:

    • 与版本号无关。它使用不同的键,xcode 5 不知道。所以,你尝试这样做你显然会崩溃!
    【解决方案2】:

    万岁!我修复它!希望对其他人有用:

    我使用正则表达式查找所有虚拟字符串(支持 Sublime 2 的正则表达式版本)

    1. 在最喜欢的文本编辑器中打开您的 stroyboard 文件。
    2. 使用正则表达式查找所有(\w)Margin"
    3. 按模式替换所有匹配项:\1"
    4. 从文件开头删除&lt;capability name="Constraints with attributes relative to the layout margin" minToolsVersion="6.0"/&gt;
    5. 按模式查找并从情节提要文件中删除所有字符串:.*"baseline".*\n
    6. 修复错位:在 Xcode 5 中打开文件 - 并更新所有视图的约束。
    7. 就是这样! 利润!

    更新: 我发现“基线”约束也会导致崩溃,但 Xcode 没有显示任何关于这些约束的警告!

    要修复它 - 按模式从情节提要文件中删除所有字符串:.*"baseline".*\n

    【讨论】:

    • 很好的解决方案!希望我能给你 +10 而不是 +1!
    • @S1LENTWARRIOR 谢谢,另外,baseline 属性可能存在另一个冲突,这在 iOS 7 中也不可用,但 Xcode 有时间会自动添加它!我会尽快更新答案!
    猜你喜欢
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多