Problème d'autorégulation dans le Xcode 8
=== MODIFIER ========
cette question est maintenant résolue dans Xcode 8.1 . J'ai vérifié.
================
Je ne connais pas l'auto-disposition correctement. Donc, j'utilise l'option d'auto-dimensionnement dans toutes mes applications et c'est très bien pour moi. Je suis capable de répondre à toutes mes exigences par ceci sans aucun problème.
maintenant dans Xcode 8, j'ai migré mon ancien projet swift vers swift 3. Maintenant la question se pose.
voir en image, j'ai mis Autoredimensionnement, et son fonctionnement sans problème dans tous les appareils jusqu'à présent et ce projet est en direct dans AppStore, de sorte que je ne peux pas montrer L'UI ou storyboard.
maintenant je dois faire une mise à jour dans le projet. Donc je travaille dans Xcode 8 maintenant. Mais mon auto-dimensionnement ne fonctionne pas correctement, car tous les contrôles sont arrivés le centre et l'INTERFACE utilisateur est foiré.
et le problème persiste dans le dispositif aussi. J'ai aussi vérifié le simulateur et le dispositif. Mais le problème est là aussi. Toute suggestion et aide sera appréciée. Merci à l'avance.
EDIT:
hier, il est question dans runtime seulement, mais aujourd'hui storyboard a également changé de point de vue comme ceci image
ce qui veut dire que tout le design de L'interface est foutu. C'est bizarre.
9 réponses
face au même problème. De mon point de vue, ce problème s'est produit lorsque nous utilisons l'autoresizing et que nous ne définissons que le masque d'autoresization interne à n'importe quel contrôleur de vue. Comme,
si nous utilisons aussi limite autoresizingMask à ce moment-là ne faisant pas face à cette question. Comme,
Je ne sais pas si c'est réel bug de xcode 8 ou supprimer cette fonctionnalité dans xcode 8.
donc, finalement ma suggestion est que nous devons utiliser la mise en page automatique dans xcode 8.
s'il vous plaît essayer de décocher autores dimensionnement de xib ou storyboard. Et dans viewDidLoad
set [_scrollView setAutoresizesSubviews:YES];
l'Essayer si ce résoudre votre problème
Edit: En cas de storyboard décochez la case Resize view from NIB
option.
Je ne suis pas sûr pour les storyboards mais j'ai trouvé une solution temporaire pour les fichiers xib. Dans le panneau Utilities (panneau de droite)sélectionnez L'onglet File Inspector. Sous la section Interface Builder Document, sélectionnez le fichier à ouvrir dans " XCode 7.x". Il vous demandera de confirmer que vous ne voulez pas utiliser les fonctionnalités XCode 8, enregistrer le fichier et le fermer.
j'ai aussi face à problème de même pour le scrollView dans Xcode8
j'ai une solution pour travailler avec scrollView
prendre d'abord un UIView simple et ajouter tous les composants que vous voulez ajouter dans scrollView et donner ce composant à l'autoSizing
et aussi prendre un scrollView et programmatically définir le cadre de vue et aussi définir scrollView contentSize et ajouter votre vue dans scrollView
comme sage, dans mon cas je ajouter ce code dans viewDidLoad pour le projet 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)
c'est du travail pour moi, merci!
Xcode 8 beta 2 résolu ce problème!! J'ai déjà checkeded maintenant!
mise à jour le problème semble avoir été corrigé dans le Xcode 8.1
ayant le même problème et j'ai constaté que le contrevenant ici est l'élément UIScrollView . Il suffit de déplacer tout à l'extérieur de votre scroller et vous verrez que tout fonctionne très bien, comme avant.
ce qui signifie qu'une solution possible serait de placer votre contenu scrollable dans un ordinaire UIView, puis le remplacer par UIScrollView à l'exécution, programmatiquement.
un modérateur a gentiment supprimé ma réponse ici comme une copie, donc voir ma réponse à:
d'un redimensionnement automatique sous iOS 10 ne fonctionne pas
en réponse à max, Oui, redimensionner un tas de subviews peut être douloureux. C'est pourquoi j'ai suggéré d'ajouter une seule "vue de contenu" à la vue de défilement et de déplacer tous vos sous-vues existants à l'intérieur de cette vue. Autosize les subviews à l'intérieur de la vue de contenu comme vous l'avez fait avec le le scrollview, et autosize l'affichage du contenu de la scrollview.
c'est cette vue de contenu que vous redimensionnez alors à l'intérieur de viewDidLayoutSubviews.
et encore une fois, la" vue de contenu " à l'intérieur de la construction scrollview est à peu près le moyen standard pour obtenir des vues de défilement de taille automatique en utilisant autolayout, donc il devrait être considéré comme une pratique exemplaire.
Cette méthode est décrite ici...
https://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios /
ma méthode semble un peu alambiquée, mais j'ai pu rafistoler un scénario avec une douzaine de scènes et de Vc's en 15 minutes. Il aurait fallu beaucoup, beaucoup, beaucoup plus de temps pour tout reconstruire en utilisant la mise en page automatique.
Apple vient de sortir avec XCode 8.2, ce qui résout ce problème pour moi. J'ai utilisé XCode 7.3.1 pour ma conception d'interface parallèle à 8.1, mais je peux maintenant utiliser 8.2 sans aucun problème.
le storyboard est mis à jour avec les largeurs et la hauteur des cadres cependant, pour s'adapter à la nouvelle fonctionnalité " View as:". Bien que cela ne semble pas affecter le fonctionnement sur le dispositif/simulateur.
curieusement, le bugfix n'est pas noté dans le XCode 8.2 notes de mise à jour .
réponse Originale à cette question ici