11
votes

Storyboard en Xcode est si lent

J'ai 150 UIViewController dans Storyboard et le défilement entre ces vues est si lent. Je ne peux pas zoomer et zoomer facilement et il faut du temps sérieux pour faire de la lune.

Je suis sur MBPR et j'ai installé Xcode 4.4

SPECTURE: 2.3GHZ / 16G / 256, ce qui, je pense qu'il suffit de gérer une telle chose.

Y a-t-il des options, des paramètres ou des conseils / astuces pour avoir tant de vues sur Storyboard et ne manquez pas les performances.

Remarque: J'ai terminé toutes les solutions possibles (supprimer le cache et l'espace de travail). N'a pas fonctionné. Il a quelque chose à voir avec le nombre d'UIViewController dans Storyboard.

merci

update 2016 : Juste pour mettre à jour cette question car il existe une nouvelle fonctionnalité dans Xcode 7 qui vous permet de refroidir le storyboard dans plusieurs scénario.

Storyboards refactoring https://developer.apple.com/library/ ios / recettes / xcode_help-ib_storyboard / chapitres / refactorstoryboard.html

Si vous recherchez le terme "storyboards de refactoring", vous trouverez de bons tutoriels :)


2 commentaires

Avez-vous déjà résolu votre problème? Peut-être que vous pouvez marquer la bonne réponse


oh mon frère !!, 150 VC, sentir la douleur: -


4 Réponses :


3
votes

150 ViewContrôtes dans une scénario sonne énormément pour moi. Essayez de minimiser votre flux ou divisé en plusieurs storyboards si vous avez vraiment besoin de tant de


1 commentaires

Salut mate, sonne horrible mais y a-t-il une limitation à l'aide de storyboard? La chose est qu'il n'y ait rien de savoir combien de vues peuvent être dans le storyboard. Je les lis tous et il n'y en avait pas. J'ai essayé de les réduire et d'afficher du contenu de manière dynamique mais ce n'est pas pour moi le client le faisait avant et je fais juste une modernisation majeure. Je viens de demander à la curiosité de voir s'il y a des astuces / astuces autour ou même une limitation. Merci pour votre réponse. Et n'a pas pensé à la division à deux storyboards. Merci.



6
votes

Utilisez définitivement plusieurs storyboards pour cela. Je ne suis pas au courant d'aucune limitation d'utilisation de storyboards, mais essayant de resserrer tout ce code d'interface utilisateur à une fois est difficile pour votre machine et il est également difficile pour les développeurs de comprendre.

Essayez de diviser logiquement vos storyboards en catégories telles que: "Profilésb, Feillesb, MapsB, Messagessb, ParamètresB"

Voici quelques bons tutoriels sur la création de celles-ci:
http://spin.atomicObject.com/2014/02/18/ iOS-Storyboards-Xcode5 /
http://www.skillmasters.net/main/xcode-utilisateur-multiple- storyboards /


1 commentaires

Pour compléter cette réponse dans une version plus récente de xcode, refactoring storyboards développeur.apple.com/library/ios/recipes/...



1
votes

J'ai eu un utistoryboard avec 10 ou plus uiviewcontrollers et supplémentaire contentions . Après avoir appliqué les vues et la personnalisation de plus en plus, le utistoryboard est de plus en plus paresseux.

Mon approche consistait à configurer les vues à l'intérieur de l'utilisateur uistoryboards . Chargement des contrôleurs est effectué à l'intérieur de mon menu, où je configurais un nsarray avec tous les identificateurs pour le uiviewcontroller qui doit également être configuré à l'intérieur du utistoryboard :

Entrez la description de l'image ici

lors du chargement du menu, Je boucle via le nsarray et chargez le uiviewcontrolsers par identifiant du utistoryboard spécifique . C'est l'endroit où je devais implémenter un commutateur, pour les différents uistoryboards : xxx

dans mon cas, il y avait juste un problème avec le Segues Après avoir séparant le UINAVIGATIONCONTROLLER de mon UIViewControls . Les segues ne pousseront pas à une entreprise de navigation, s'il n'y a pas d'initiale UinavigationController . C'est pourquoi j'ai ajouté un uinavigationController sur chaque uiviewcontroller (de mon nsarray) afin que le utistoryboardancaire soit fait correctement. Le UINAVIGATIONController n'a également pas besoin d'être connecté à une classe, il suffit d'inclure-le à l'intérieur du utistoryboard et de le connecter au premier uiviewcontroller . < / p>


0 commentaires

7
votes

Il est considéré comme une meilleure pratique pour diviser les storyboards en lots de modules différents (chacun dans un story-boot séparé). Il enlèvera ces problèmes de performance que vous rencontrez et propose également d'autres avantages, tels que la gestion plus facile à gérer en général (aucun conflit massif de SVN, etc.).

Cependant, j'ai eu un autre problème qui causait un retard de scénario. J'avais environ 25 contrôleur d'affichage et recevait beaucoup de retard - mais seulement lorsque Xcode fonctionnait sur un moniteur externe.

J'ai remarqué que si j'ai désactivé "la mise en page automatique" pour le storyboard, le décalage serait complètement disparu. J'ai retourné ce changement, puis j'ai suivi le processus suivant: -Delete a ViewController -Test s'il est toujours à la traîne -Si toujours laggy revenir à des modifications

Finalement, j'ai trouvé une certaine zone de vue qui, si elle est supprimée, arrêtez tout le décalage. Je l'ai ensuite retourné et avons traversé les vues pour voir quelle vue a causé le décalage. J'ai finalement réduit cela à un "Uibutton" à l'intérieur d'un "Uibarbuttonitem". Je crois que j'ai changé la propriété "Type" sur le bouton, puis la modifiait et le décalage s'est arrêté. De SVN, il semble que le cadre ait été changé dans le fichier .storyboard. Après ce point, le décalage n'a jamais revenu.

TLDR: Le décalage de scénario n'est pas toujours parce que vous avez trop d'articles dans le storyboard. J'ai réussi à me débarrasser d'un problème de lag en provoquant une certaine présentation de Xcode.

J'espère que mon expérience aidera quelqu'un d'autre à diagnostiquer / résoudre leurs problèmes. Je travaillais depuis environ 0,5 ans avant que je me suis enfin vraiment ennuyé et j'ai essayé de résoudre le problème.


8 commentaires

Bingo! J'avais une lenteur incroyable et mon storyboard n'a que 7 contrôleurs de vue. Deux des VCs avaient un uibutton dans un barbouttonitem. J'ai supprimé ces boutons et la vitesse instantanée. Maintenant, je connais la cause, sur la recherche d'une solution ...


Hey @swany, comme je l'ai dit dans mon poste, je les ai supprimés et que je les ai ré-ajoutés et que cela réinitialisait les cadres qui ont arrêté le décalage insensé. Essayez de les ajouter de les ajouter, cela pourrait fonctionner pour vous.


@Rufusmall Re-Ajout de boutons n'a pas fonctionné pour moi. Depuis que je suis dans un peu de crunch, je les ajoute maintenant en code et tout est heureux. Je reviendrai quand le temps le permet.


Ok, s'il vous plaît laissez-moi savoir si vous trouvez une solution pour le faire fonctionner parfaitement. J'ai aussi fait quelque chose de "commutation" des styles de boutons, etc. alors peut-être que c'était en fait ce qui l'a résolu. Je me souviens juste que la source .stortoryboard semblait exactement la même chose en SVN, juste avec différentes lectures pour le cadre. Bonne chance.


Je semble avoir le retard lorsque sur le moniteur externe. Déplacé du moniteur externe, pas de retard.


Oui, avoir un décalage sur le moniteur externe uniquement.


Merci pour la pointe du moniteur externe! J'ai passé des heures à essayer de savoir pourquoi mon storyboard était soudain inutilisable, et c'est parce que j'ai déplacé la fenêtre Xcode sur un autre moniteur.


Ha pas de problème! Je trouve vraiment ça vraiment étrange. Peut-être que quelqu'un devrait ouvrir un billet radar avec Apple pour le faire trier. Surpris que le problème soit toujours autour.