9
votes

LayouTouSubviews a-t-il appelé chaque fois que la taille de la vue est modifiée?

Dans mon empreinte, avec AutoFeizessubviews = Oui, les soumissions doivent être appelées que la taille de la vue de chaque fois est modifiée. Mais j'ai trouvé que ce n'est pas le cas pour ma vue. Est-ce que mon espoir est faux?


1 commentaires

Désolé pour ma négligence. Je veux dire changement de taille.


4 Réponses :


0
votes

De ma compréhension, layouplieViews est appelé lorsque la vue est Bounds change. Cela signifie que si sa position change dans son superview (mais pas sa taille), lesyoutsubviews ne seront pas modifiés (car le point d'origine dans les limites est dans le système de coordonnées de la vue - il est donc presque toujours 0,0). En bref, seul un changement de taille entraînera une cuisson.


1 commentaires

Désolé pour ma négligence. Je veux dire changement de taille. Mes LayouToux ne sont pas appelés même lorsque sa taille est modifiée.



1
votes

Si vous avez besoin de quelque chose pour arriver lorsque votre point de vue est redimensionné, vous pouvez également remplacer setbounds: et setFrame: pour votre classe pour vous assurer qu'il se passe. Cela ressemblerait à quelque chose comme ça xxx


L'autre raison que je remplace parfois ces méthodes (temporairement) est donc pour que je puisse m'arrêter dans le débogueur et voir quand ils sont appelés et par quel code.


3 commentaires

Merci. Mais je ne demande pas quoi faire pour forcer une mise en page - je sais que je peux appeler SetNeedslayout. Je confirme s'il s'agit d'un protocole défini que chaque fois que la taille de la vue est modifiée, ses soumissions sont appelées ultérieurement. Je pensais que, mais ce que je vois dans mon code le défie, je me demande donc si c'est un virus de SHD ou que ma compréhension est fausse.


Ah, je vois. Je vais demander à quelques amis à Apple et voir quel genre de réponses nous obtenons. Quelle version de Xcode et quelle version du SDK utilisez-vous?


Entre-temps ... Découvrez ce Guide de développeur.apple.com . Il a beaucoup de bonnes informations sur la mise en page.



7
votes

Selon des sources à Apple,

"- [UIView LayOutouSubviews] devrait être appelé lorsque la taille de la vue change."


Ils m'ont également référé à cela, du Guide de programmation de la vue pour iOS:

"Chaque fois que la taille d'une vue change, Uikit applique les comportements automobiliaires des sous-visions de cette vue, puis appelle la méthode LayouTouSubviews de la vue pour la laisser modifier manuellement les modifications. Vous pouvez implémenter la méthode LayouTUnviews dans des vues personnalisées lorsque Les comportements automobiliaires en eux-mêmes ne cèdent pas les résultats que vous souhaitez. "


À ce stade, votre meilleur mouvement consiste à créer un petit exemple de projet où Layoutsubviews n'est pas appelé (ou envoyer votre projet existant) un bug avec Apple utilisant BugReporter et inclure cet exemple de projet avec votre bogue.


1 commentaires

Merci, je vais essayer de créer un exemple de projet.



-1
votes

Chaque fois que vous souhaitez redimensionner les vues manuellement et redimensionner appelle automatiquement LayouSubviews méthode xxx


0 commentaires