web-dev-qa-db-fra.com

Problèmes de mise en page après la mise à jour vers Xcode 8

Voici un avant et un de mes écrans après la mise à niveau vers Xcode 8.
Tout ce que je fis, c’est d’ouvrir mon main.storyboard et à partir de là, je construis et exécute mon application sur mon téléphone.
Dans mon contrôle de version, je peux voir que Xcode apporte beaucoup de modifications à mon tableau principal juste à mon ouverture.
Chaque fois que je supprime ces modifications, je peux voir ce que j’ai l'habitude de voir dans Xcode 7.3.1.
Mais dès que je rouvre le constructeur d’interface avec mon scénarimage, je constate que ces changements se sont réinstallés.

Est-ce que je peux faire quelque chose ici?

Avant Xcode 8

enter image description here

Après la mise à jour vers Xcode 8

enter image description here

102
user2726072

J'ai eu un problème similaire avec les images tableview qui n'apparaissaient pas une fois que j'ai converti le fichier de scénario en compatibilité Xcode8. Cela ressemble à un bogue avec Xcode8. Ainsi, jusqu'à ce qu'un correctif soit publié, voici une solution:

  1. Ouvrez votre storyboard dans Xcode 8 et choisissez une vue initiale du périphérique. Apportez les modifications comme vous le feriez normalement.
  2. Une fois vos modifications terminées, sélectionnez le scénario -> Inspecteur de fichiers -> Ouvre dans -> Sélectionnez "Xcode 7.x".

enter image description here

  1. Sélectionnez "Enregistrer et fermer" lorsque vous y êtes invité
  2. Vos modifications de story-board seront sauvegardées et votre story-board fonctionnera comme avant-Xcode8.

Si vous devez apporter d'autres modifications au fichier de scénario, suivez à nouveau ces étapes.

111
David T

XIB ou Storyboard définit par défaut l'ancienne version 7.x, ainsi que les fonctions Enregistrer et Fermer. Solution temporaire, mais fonctionne. N'ouvrez pas à nouveau une fois que vous avez terminé Sauvegarder et fermer. Sinon, vous devez suivre les mêmes étapes depuis le début . enter image description here

14
Bhavesh Kumbhani

Eh le même problème. J'ai partiellement réussi à le réparer de la manière suivante ( pour Xcode Version 8.1 (8B62) )

Dans l’aperçu du document de Storyboard, j’ai cliqué sur chaque scène comportant la flèche jaune indiquant certains problèmes de mise en page (numéro 1 sur la capture d’écran).

Après cela, pour chaque scène problématique, je devais cliquer sur la petite icône "Mettre à jour les cadres" (numéro 2 sur la capture d'écran) qui résolvait tous les problèmes de mise en page par scène.

enter image description here

Cependant, une scène dans mon cas était toujours en train de pleurer après la transition de Xcode7 à Xcode8. Je devais le corriger manuellement en ajustant les contraintes ou en ajoutant des contraintes manquantes.

Ouf, pas belle surprise de XCode8 et Storyboards. Si vous utilisez l'éditeur AppCode, vous n'aurez pas ce problème, car il ne prend pas en charge Storyboards; P

Bonne chance!

8
TekMi

Xcode 8.1 Beta 2 résout ce problème. S'il vous plaît vérifier ce lien de téléchargement

https://developer.Apple.com/download/

7

S'il vous plaît suivez les discussions pour toute solution possible: (Je crois que cela arrive à de nombreux développeurs).
Xcode 8 GM numéro du storyboard d'origine
Xcode 8 - Les story-boards précédents sont déformés

(J'ai utilisé anyW anyW width 600) Lors de la mise à jour de Xcode en Xcode 8, toutes les tailles de ViewControllers ont été modifiées. En conséquence, toute la mise en page était déformée.
Actuellement, je ne vois que 3 solutions au problème (je ne ferais pas confiance en attendant la solution rapidement).

1.Allez pour chaque contrôleur de vue et corrigez-le par Update Frames.

2.Accédez au ViewController principal Size Inspector -> Freeform -> 600 puisque la plupart des contrôleurs sont déduits, la taille de chacun d’eux sera modifiée (attention à l’impact des nouvelles fonctionnalités Apple mon envie de présenter).

3. Ignorez les modifications apportées à git pour le storyboard (je ne le suggérerais pas car Apple insère également des mises à jour pouvant être importantes pour Xcode).

Lien supplémentaire vers les nouvelles fonctionnalités AutoLayout dans Xcode 8 (WWDC16): Rendre les applications adaptatives, première partie

6
Mike.R

Dans mon cas, les solutions suggérées par Akhil Kateja et moi avons également besoin de réinitialiser la largeur et la hauteur de la vue principale:

1) Définissez la taille de la vue sur une forme libre

enter image description here

2) Réinitialisez la largeur et la hauteur de la vue à la taille d'origine:

enter image description here

Enfin, sauvegardez et vous avez terminé.

5
christian mini

Pour moi, la solution consistait simplement à cliquer sur le contrôleur UIViewController qui rencontrait des problèmes, puis sur Editor > Resolve Auto Layout Issues > All Views In ... > Updates Frames.

Il a réorganisé les vues pour les adapter aux contraintes existantes en fonction de la nouvelle vue par défaut sélectionnée (iPhone 7 dans mon cas).

Notez également que si vous obtenez un avertissement Barre de navigation mal placée comme moi, sélectionnez simplement UINavigationController/UIViewController puis Attributes Inspector > Bar Visibility > Shows Navigation Bar - basculez-le sur OFF, puis à nouveau sur ON.

4
whycodewhyyyy

Définir la taille de la vue sur Freeform à partir de inféré a fonctionné pour moi. Vous pouvez le trouver sous la rubrique Mesures simulées dans Inspecteur d'attributs.

3
Akhil Kateja

J'espère que cela aidera

Lorsque j'ai mis à jour Xcode de 7.3 à Xcode 8 et que je lance l'application, certaines vues sont parfaitement affichées mais d'autres sont déformées.Ensuite, j'ai vérifié le fichier nib et cela m'a incité à choisir une taille de périphérique particulière, puis à afficher le nib en fonction de ces informations. taille du périphérique qui est hors cours, pas Any-Any(Xcode 7.3). Tous les fichiers nibs ne s’affichent donc pas correctement.

Solution travail me: - appuyez sur la flèche jaune comme indiqué dans l'image ci-dessous

enter image description here

il va inviter une fenêtre contextuelle qui affiche des options comme

enter image description here

choisissez Update Frames avec Apply to all views in container coché.Il résoud environ 90% de l'interface utilisateur déformée et le reste du problème de contrainte de mise en page automatique peut être résolu manuellement.

3
Anurag Bhakuni

J'ai sélectionné chaque contrôleur et cliqué sur "Mettre à jour les cadres" et il a corrigé la mise en page.

3
Mayckon Barbosa

La réponse de @ david-truong ( https://stackoverflow.com/a/39589860/1407528 ) ne fonctionne pas dans mon cas. Si vous êtes dans la même situation, essayez ceci:

Si tous vos appareils sont mis à jour vers iOS 10+, cette version de Xcode ne reconnaîtra pas ces appareils comme des appareils compatibles. Alors, essayez avec cette astuce:

  • Allez à: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
  • Copiez les dossiers associés à iOS 10 ou 10.1 dans:/Applications/Xcode 7.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport.
  • Ouvrez le projet avec Xcode 7.3.1 (redémarrez Xcode si vous l'avez déjà ouvert)
  • Sélectionnez votre appareil iOS 10+ connecté
  • Push Run

Remarque: les nouvelles fonctionnalités telles que Swift ne seront pas disponibles avec cette astuce, mais vous devriez pouvoir charger et construire votre projet.

3
goe

J'ai eu le même problème et je l'ai résolu en forçant à mettre à jour les contraintes de vue du contrôleur. Mettez le code suivant dans votre fonction viewDidLoad ()

self.view.layoutIfNeeded()
3

Je remarque un nouveau bouton dans Xcode 8.2 (vérifiez le cercle orange dans l'image). Cela vous aidera.

Étapes: 1. Ouvrez le storyboard et sélectionnez le périphérique de votre choix. 2. Sélectionnez simplement le contrôleur de vue. 3. Cliquez sur le bouton mentionné (comme dans Image). 4. Le cadre de ce contrôleur de vue sera mis à jour et vous pourrez continuer.

Je n'ai pas trouvé de meilleure solution que celle-là. S'il vous plaît répondre si trouvé un.

IB screenshot

1
Shahul Hasan

Pour résoudre un problème similaire, j'ai configuré xib comme étant Freeform (non inféré) ET le fichier xib enregistré comme compatible Xcode 7.x. Les deux étapes étaient nécessaires dans mon cas. J'espère que ça aide!

1
Juan F. Sagasti

J'ai résolu le problème en utilisant Xcode Version 7.3.1, vous pouvez télécharger le fichier .dmg à partir du portail de développeurs Apple. J'ai utilisé l'auto-dimensionnement dans chaque application et cela fonctionne très bien pour moi. Je ne mettrai à jour Xcode 8 que s’ils peuvent résoudre ce problème.

Téléchargez-le ici: https://developer.Apple.com/services-account/download?path=/Developer_Tools/Xcode_7.3.1/Xcode_7.3.1.dmg

1
Koppi

mettre à jour les contraintes et les vues secondaires de présentation dans viewdidload résout le problème

- (void) viewDidLoad {
        [self.view updateConstraints];
        [self.view layoutSubviews];
        [super viewDidLoad];
}
0