Comment détecter si UIView taille est modifiée dans swift ios xcode?
Je suis en train d'essayer des choses avec CATiledLayer à l'intérieur de UIScrollView.
En quelque sorte, la taille de UIView à l'intérieur de la UIScrollView est changé pour un grand nombre. J'ai besoin de savoir exactement ce qui est à l'origine de ce redimensionnement.
Est-il un moyen de détecter lorsque la taille de UIView(cadre, de limites) ou le contentSize de UIScrollView est redimensionnée?
J'ai essayé
override var frame: CGRect {
didSet {
println("frame changed");
}
}
à l'intérieur de sous-classe UIView,
mais il n'est appelée qu'une fois au démarrage de l'application, bien que la taille de UIView est redimensionnée par la suite.
Essayez de remplacer la touche func layoutSubviews()
Double Possible de Est-il une UIView événement resize?
Double Possible de Est-il une UIView événement resize?
OriginalL'auteur Joon. P | 2015-06-03
Vous devez vous connecter pour publier un commentaire.
viewWillLayoutSubviews()
etviewDidLayoutSubviews()
sera appelé à chaque fois que les limites de changement. De l'avis du contrôleur.OriginalL'auteur simons
Il y a une réponse ici:
https://stackoverflow.com/a/27590915/5160929
Il suffit de coller ce à l'extérieur d'un corps de méthode:
La détection de
bounds
changement n'est pas garanti, selon l'endroit où vous mettez votre affichage dans la vue de la hiérarchie. Je voudrais remplacerlayoutSubviews
à la place. Voir ceci et ceci les réponses.OriginalL'auteur bearacuda13
Vous pouvez également utiliser KVO:
Vous pouvez définir un KVO comme cela, où
view
est leview
vous voulez observer cadre des changements:Et vous pouvez obtenir la modification de cette notification:
La
observeValueForKeyPath
sera appelé à chaque fois que l'image de la vue, vous l'observez les changements.Aussi n'oubliez pas de retirer l'observateur lors de votre point de vue est sur le point d'être libéré:
UIKit propriétés sont en général pas KVO-conforme, ni sont-ils documentés. Je voudrais rester à l'écart de cette approche.
OriginalL'auteur Lefteris
Les réponses sont correctes, même si pour mon cas, les contraintes I de l'installation dans le storyboard a causé la UIView taille à changement sans rappeler toutes les fonctions de détection.
OriginalL'auteur Joon. P
ÉTAPE 1:viewWillLayoutSubviews
ÉTAPE 2:viewDidLayoutSubviews
Au-dessus de ces méthodes sont appelées à chaque fois que limites de UIView est changé
OriginalL'auteur user3182143