一般來說專案就算用 Xcode 6 開啟過,仍然可以回去用 Xcode 5 開啟編譯,但是一旦開始大量使用 Constraints 之後,會發現專案可能無法再以 Xcode 5.x 編譯,錯誤訊息為:
「The document “XXX” requires Xcode 6.0 or later.」以及「This version does not support constraints to layout margins. Open this document with Xcode 6.0 or later.」
這個問題主要是用到了 Auto Layout 的 margin 新功能,導致 Xcode 5 無法編譯。這類行的 XIB 或 storyboard 檔案原始碼會有這行:
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
這行清楚的點出了相容性的名稱及所需 Xcode 的最低版本,解決方式也就是朝讓 Xcode 自動消除這行下手。
而既然關鍵字是 margin,找來找去發現最可疑的就是「Relative to margin」這個選項:
把所有 Constraints 一個個點開檢查,只要這個選項有勾選的全部取消,然後再手動處理所有的問題或是警告,完成後專案應該就可以在 Xcode 5.x 裡面編譯成功了!