Construire un projet dans Xcode5.1 qui a été modifié dans Xcode 6 GM pour tester les anciennes versions d'iOS

Mon application a pris en charge au less iOS6 en utilisant le storyboard Xcode5.1.

Après avoir fait plusieurs travaux dans Xcode 6 GM, j'ai besoin de tester sur iOS 6 Simulator. Xcode 6 GM n'a pas iOS 6 Simulator.So, j'ai ouvert mon projet dans Xcode 5.1.

Mais il ne parvient pas à build. Je ne peux même pas ouvrir le storyboard dans Xcode5.1.

Au panneau de navigation, il est indiqué

Main_iPhone.storboard Interface Builder Storyboard Comstackr Error The document"(null)" requires Xcode6.0 or later. 

Et quand je clique dessus, une invite apparaît

 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. 

L'ajout de presque n'importe quel type de contrainte de layout avec Xcode 6 rendra un storyboard (ou un file .xib) incompatible avec Xcode 5.1. Si vous avez besoin de travailler avec un storyboard dans Xcode 5.1 qui a été modifié avec Xcode 6.0, il sera nécessaire de supprimer toutes les contraintes basées sur la "marge".

Effectuez ces étapes pour charger un storyboard modifié par Xcode 6 et comstackz à nouveau avec Xcode 5:

En utilisant Xcode 6:

  1. Définissez le "Ouvre dans" à Xcode 5.1 dans la section de document Interface Builder de l'inspecteur de file de storyboard. Lorsque ce paramètre est défini, Xcode 6.0 génère un avertissement s'il existe des contraintes de marge incompatibles.

    Attributs de mise en page relatifs à la marge de mise en page sur les versions iOS antérieures à 8.0

  2. Un moyen facile d'identifier les contraintes de marge est d'ouvrir le storyboard dans un éditeur de text (de preference celui qui s'actualise automatiquement lorsque le file est modifié sur le disque). Cherchez le mot "Margin" et cherchez des lignes comme ceci:

     <constraint firstItem="gZc-ET-UKM" firstAtsortingbute="leading" secondItem="MMQ-IT-qOo" secondAtsortingbute="leadingMargin" constant="-8" id="H3i-wo-2Mm"/> 
  3. Ces contraintes doivent être supprimées ou mises à jour pour être basées directement sur la vue d'set plutôt que sur une marge. Il est possible de mettre à jour la contrainte au lieu de la supprimer en sélectionnant la contrainte dans l'aperçu, puis en passant à l' inspecteur de taille et en décochant l'option "Relative à la marge" dans le drop down menu pour les parameters Premier ou Deuxième élément . Une fois que vous faites cela, vous devrez également append une constante qui correspond à la marge (généralement 8).

    Relatif à l'image de la marge

Lorsque vous supprimez ou mettez à jour chaque contrainte, vous devez voir le file de storyboard dans la mise à jour de l'éditeur de text et supprimer le mot "Margin". Une fois que vous avez supprimé toutes les contraintes incompatibles, l'avertissement disparaît et cette ligne disparaît du file de storyboard:

  <capability name="Constraints to layout margins" minToolsVersion="6.0"/> 
  1. Si vous avez supprimé les contraintes, l'étape finale consiste à ouvrir le projet dans Xcode 5 et à les recréer.

Je rencontre le même problème, et voici ma solution:

Supposons que le file de problème est Main.storboard

  1. Utiliser le projet ouvert Xcode 6;
  2. Sélectionnez Main.storboard open comme code source;
  3. Recherche "marge" dans le code source;
  4. Décochez les contraintes relatives par rapport à la marge dans Interface Builder.

Vous pouvez modifier cette option dans l'inspecteur d'identité sur le côté droit. Sélectionnez votre Storyboard dans Xcode 6, ouvrez l'inspecteur d'identité, puis Document Interface Builder -> Ouvre dans Xcode 5.1 (ou quelque chose d'autre)

select votre file nib ou storyboard, select l'inspecteur de file pic 1. Et décochez l'utilisation des classs de taille (image 2) dans chaque storyboard, créé avec xcode 6, car il est coché par défaut.

entrez la description de l'image ici

Bien que, je ne pense pas que ce soit la solution ultime, pour l'instant j'écris, j'ai simplement ignoré cette "erreur rouge" et bash la course.

Il a lancé iOS6 simulateur et a bien fonctionné. Tout ce que j'ai dû c'est quitter le simulateur lancé par Xcode 6.

Le message d'erreur est toujours là et je ne peux pas ouvrir le file de storyboard dans Xcode 5.1.

mais au less je suis capable de le tester sur l'ancienne version d'iOS. Alors maintenant Xcode5.1 est seulement pour le test, pour mon application 🙁

Si vous trouvez une meilleure solution, répondez à la question. Merci.