La compréhension convertPoint:toView:
Je ne comprends pas très bien la méthode convertPoint:toView:
.
Dans la documentation d'Apple, il est écrit que
convertPoint:toView:
Convertit en un point du récepteur du système de coordonnées de l'
vue spécifiée.- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view
Mais que fait la conversion d'un point de l'un à l'autre signifie réellement?
N'implique que les points dans les deux limites ont différentes unités? Ou tout simplement des valeurs différentes?
Si elle est la dernière, pourquoi est-il une méthode de ce genre quand il suffit d'affecter la valeur de la contentOffset
de b ?
CGPoint a = [a contentOffset];
[b setContentOffset:a];
Comment est convertPoint:toView:
différente de la simple attribution de contentOffset
? Ou ai-je mal compris le concept? Ce n' la conversion de points faire réellement? Lorsque cette méthode devrait être utilisée?
- Je crois qu'il a quelque chose à voir avec
view.transform
. - Ce n'vue.transformer faire? Attribution d'établissement du centre à un autre point de vue?
- stackoverflow.com/questions/2081753/...
- Merci pour le lien mais je n'ai pas encore tout à fait le faire...
- Le
transform
propriété vous permet d'adapter, de traduire, de faire tourner n'importe quelle vue (avec l'accélération matérielle, FWIW). Il est utilisé en interne pour gérer l'auto-rotation de votre application, par exemple : le principalUIWindow
est toujours le portrait même si vous tenez votre iPad paysage, et unrotate 90° + translate to center
transformation appliquée à elle.. La conversion entre les modes portrait et paysage coordonnées est fait avec leconvertPoint:fromWindow:
fonction, IIRC. - Merci! Je crois que je comprends maintenant.
Vous devez vous connecter pour publier un commentaire.
Chaque UIView a son propre système de coordonnées. Donc, si vous avez un UIView_1 qui contient un autre UIView_2, ils ont tous les deux un point (10,10) à l'intérieur d'eux.
convertPoint:toView: permet au développeur de prendre un point dans un point de vue et de les convertir au point un autre système de coordonnées.
Exemple:
vue1 contient vue2. Le coin supérieur gauche de vue2 est situé au point de vue1 (10,10), ou pour mieux dire vue2.cadre.origine = {10,10}. Que {10,10} est basé dans la vue1 système de coordonnées. So far So good.
L'utilisateur touche la vue2 au point {20,20} à l'intérieur de la vue2. Maintenant, ces coordonnées sont dans la vue2 système de coordonnées. Vous pouvez maintenant utiliser covertPoint:toView: pour convertir {20,20} dans le système de coordonnées de vue1. point de contact = {20,20}
Alors maintenant pointInView1Coords devrait être {30,30} dans la vue1 systèmes de coordonnées. Maintenant que c'était juste un simple calcul sur cet exemple, mais il y a toutes sortes de choses qui contribuent à la conversion. Transforme et la mise à l'échelle viennent à l'esprit.
Lire sur UIView cadre, des limites, et au centre. Ils sont tous liés et ils traitent avec des systèmes de coordonnées pour un point de vue. Sa confusion jusqu'à ce que vous commencez à faire des choses avec eux. Rappelez-vous cette image et centre sont dans le parent du système de coordonnées. Limites dans l'affichage du système de coordonnées.
Jean