Échelle UIView avec le centre supérieur comme point d'ancrage?
Je me suis mise à l'échelle d'une UIView avec CGAffineTransformMakeScale mais je veux garder ancré dans son milieu haut point car il est mis à l'échelle.
J'ai regardé dans le réglage de view.layer.anchorPoint
mais je crois que j'ai besoin d'utiliser ceci en conjonction avec le réglage de view.layer.position
de tenir compte du changement dans le point d'ancrage.
Si quelqu'un pouvait me diriger dans la bonne direction, je serais très reconnaissante!
source d'informationauteur Alistair Holt
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à ma réponse ici pour comprendre pourquoi votre vue est en mouvement lorsque vous modifiez le point d'ancrage: https://stackoverflow.com/a/12208587/77567
Donc, commencer avec votre point de vue de transformer l'ensemble de l'identité. Lorsque la vue est non transformées, trouver le centre de son bord supérieur:
Alors le point d'ancrage vers le milieu du bord supérieur:
Maintenant la couche
position
(ou le point de vue de l'center
) est la position du centre de la couche supérieure de l'arête. Si vous vous arrêtez ici, la couche va se déplacer de sorte que le centre de son bord supérieur est là son véritable centre était avant de changer le point d'ancrage. Donc le changement de la couche deposition
au centre de son bord supérieur d'une heure: il y aMaintenant la couche reste au même endroit sur l'écran, mais de son point d'ancrage est le centre de son bord supérieur, de sorte que les échelles et les rotations quittera point fixe.
C'est une vieille question, mais j'ai connu le même problème et m'a pris beaucoup de temps pour obtenir le comportement souhaité, en élargissant un peu la réponse de @Rob Mayoff (j'ai trouvé la solution grâce à son explication).
J'ai dû montrer une variable affichage de mise à l'échelle à partir d'un point touché par l'utilisateur. En fonction de l'écran coords, Il pourrait l'échelle vers le bas, à droite, à gauche, en haut ou à partir du centre.
La première chose à faire est de définir le centre de notre flottante vue dans le point de contact (Il doit être le centre, parce que Rob explication):
La question suivante est l'installation de la point d'ancrage de la coucheen fonction de ce que nous voulons faire (j'ai mesuré le point par rapport au cadre de l'écran, et déterminé l'endroit où à l'échelle):
Maintenant, il est facile. Selon l'effet que vous souhaitez donner à l'animation (L'idée a été de rebondir de mise à l'échelle de 0 à 100%):
Que c'est. Comme vous pouvez le voir, la chose principale est de correctement configuration de l'affichage de la position et de point d'ancrage. Ensuite, il est tout morceau de gâteau!
En ce qui concerne, et de laisser le code soit avec vous!
Swift 4
De mise à l'échelle d'une UIView avec un point d'ancrage tout en évitant l'égarement:
Afin de réduire une vue à la moitié de sa taille avec ses haut au centre comme point d'ancrage: