web-dev-qa-db-fra.com

Problème d'autoresizing dans Xcode 8

=== ÉDITE ========

Ce problème est maintenant résolu dans Xcode 8.1. J'ai vérifié.

================

Je ne connais pas correctement la mise en page automatique. Donc, j'utilise l'option de redimensionnement automatique dans toutes mes applications et c'est très bien pour moi. Je suis en mesure de répondre à toutes mes exigences sans aucun problème.

Maintenant, dans Xcode 8, j'ai migré mon ancien projet Swift vers Swift 3. Maintenant, le problème se pose. 

 Storyboard SS

Voir en image, j'ai défini la réduction automatique et son fonctionnement fonctionne sans problème dans tous les périphériques jusqu'à présent et ce projet est actif dans l'AppStore, de sorte que je ne peux pas afficher l'interface utilisateur ou le storyboard. 

Maintenant, je dois faire des mises à jour dans le projet. Je travaille donc dans Xcode 8 maintenant. Mais mon auto-dimensionnement ne fonctionne pas correctement, car toutes les commandes sont placées au centre et l'interface utilisateur est gâchée.

 Output image

Et le problème persiste également dans l'appareil. J'ai vérifié dans le simulateur et le dispositif aussi. Mais le problème est là aussi. Toute suggestion et aide sera appréciée. Merci d'avance.

MODIFIER: 

Hier, il y a un problème d'exécution seulement, mais aujourd'hui, le storyboard a également changé de vue, comme cette image.

 Storyboard image

Ce qui signifie que toute la conception de l'interface utilisateur est perturbée. C'est bizarre.

32
Max

Face au même problème. En tant que mon point de vue, ce problème survient lorsque nous utilisons la réduction de la taille automatique et que nous ne définissons que le masque de réduction automatique interne sur un contrôleur de vue. Comme,

 enter image description here

Si nous utilisons également border autoresizingMask à ce moment-là, pas face à ce problème. Comme,

 enter image description here

Je ne sais pas s'il s'agit d'un bogue de xcode 8 ni de supprimer cette fonctionnalité dans xcode 8.

Donc, finalement, ma suggestion est que nous devons utiliser la mise en page automatique dans xcode 8. 

7
Keyur Hirani

S'il vous plaît, essayez de décocher le redimensionnement automatique de xib ou de storyboard Et inviewDidLoad set [_scrollView setAutoresizesSubviews:YES];

Essayez si cela résout votre problème

Edit: En cas de storyboard, décochez l'option Resize view from NIB.

7
Hassy

Je ne suis pas sûr des storyboards, mais j'ai trouvé une solution temporaire pour les fichiers xib. Dans le panneau Utilitaires (panneau de droite), sélectionnez l'onglet Inspecteur de fichier. Dans la section Document d'Interface Builder, sélectionnez le fichier à ouvrir dans "XCode 7.x". Il vous demandera de confirmer que vous ne souhaitez pas utiliser les fonctionnalités de XCode 8, enregistrez le fichier et fermez-le.

 enter image description here

3
Srdr

Xcode 8 beta 2 a résolu ce problème !! J'ai déjà vérifié maintenant!

2
Genevios

je suis également confronté au même problème pour scrollView dans Xcode8

j'ai une solution pour travailler avec scrollView

d'abord, prenez un simple UIView et ajoutez tous les composants que vous souhaitez ajouter à scrollView et donnez-les à autoSizing

et prenez également un scrollView et définissez par programme le cadre de la vue ainsi que scrollView contentSize et ajoutez votre vue dans scrollView

comme sage, dans mon cas j'ajoute ce code dans le projet viewDidLoad for Swift

// add view to scrollview

self.scrollObjForNextAppointment.contentSize = CGSize(width:self.scrollObjForNextAppointment.frame.size.width,height:410)

self.viewForScrollContent.frame = CGRect(x:0,y:0,width:self.scrollObjForNextAppointment.frame.size.width,height:410)

self.scrollObjForNextAppointment.addSubview(self.viewForScrollContent)

ça marche pour moi, merci!

2
Sapana Ranipa

Résolu en décochant "Redimensionner automatiquement les sous-vues" dans ScrollView

 enter image description here

1
Thippi

Mise à jour le problème semble avoir été résolu dans Xcode 8.1


Ayant le même problème et j'ai trouvé que le délinquant ici est l'élément UIScrollView . Déplacez simplement tout en dehors de votre scroller et vous verrez que tout fonctionne correctement, comme avant.

Ce qui signifie qu'une solution de contournement possible serait de placer votre contenu défilable dans une UIView ordinaire, puis de le remplacer par UIScrollView au moment de l'exécution, par programme.

1
mojuba

Un modérateur a aimablement supprimé ma réponse ici en tant que duplicata. Voir ma réponse à l'adresse suivante:

Le redimensionnement automatique sous iOS 10 ne fonctionne pas

En réponse à max, oui, redimensionner un ensemble de sous-vues peut être pénible. C'est pourquoi j'ai suggéré d'ajouter une "vue de contenu" à la vue de défilement et de déplacer toutes vos sous-vues existantes à l'intérieur de cette vue. Ajustez automatiquement les vues secondaires à l'intérieur de la vue du contenu, comme vous l'avez fait avec scrollview, et redimensionnez la vue du contenu en vue de défilement.

C'est cette vue de contenu que vous redimensionnez ensuite dans viewDidLayoutSubviews.

Et encore une fois, la "vue du contenu" à l'intérieur de la construction scrollview est à peu près le moyen standard d'obtenir des vues de défilement à redimensionnement automatique à l'aide de la fonction autolayout;.

Cette méthode est décrite ici ...

https://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/

Ma méthode semble un peu compliquée, mais j'ai été en mesure de corriger un scénario avec une douzaine de scènes et Vc en environ 15 minutes. Il aurait fallu beaucoup, beaucoup, beaucoup plus de temps pour tout reconstruire en utilisant la mise en page automatique.

0
Michael Long

Apple vient de sortir XCode 8.2, qui résout ce problème pour moi. J'utilisais XCode 7.3.1 pour la conception de mon interface parallèle à la version 8.1, mais je peux maintenant utiliser la version 8.2 sans aucun problème. 

Le storyboard est mis à jour avec les largeurs et la hauteur des cadres afin de prendre en charge la nouvelle fonctionnalité "Afficher en tant que". Bien que cela ne semble pas affecter l'exécution sur un appareil/simulateur. 

Curieusement, le correctif n’est pas noté dans les Notes de version de XCode 8.2

Réponse originale ici

0
Thermometer