Comment mettre à l'échelle (zoomer) un UIView sur un CGPoint donné
J'ai passé beaucoup de temps à essayer de trouver un moyen d'utiliser CGAffineScale pour transformer un point de vue à un moment donné, y compris de déconner avec des points d'ancrage, le déplacement du centre de la vue avant et après la transformation et complète une recherche sur Google. J'en suis conscient, ce serait beaucoup plus simple avec un UIScrollview; mais je sais que c'est techniquement possible de le faire sans l'un, et il est devenu une écharde dans mon esprit.
Cette réponse devient remarquablement proche de ce que je veux réaliser, mais la réponse ne donne de détails sur la façon de zoom à un coin (au lieu d'un point donné) par habilement le déplacement du centre vers le coin opposé à celui que vous souhaitez agrandir.
Comment puis-je modifier mvds' code à l'échelle d'une UIView à un moment donné dans une UIView?
CGFloat s = 3;
CGAffineTransform tr = CGAffineTransformScale(self.view.transform, s, s);
CGFloat h = self.view.frame.size.height;
CGFloat w = self.view.frame.size.width;
[UIView animateWithDuration:2.5 delay:0 options:0 animations:^{
self.view.transform = tr;
self.view.center = CGPointMake(w-w*s/2,h*s/2);
} completion:^(BOOL finished) {}];
source d'informationauteur glenstorey
Vous devez vous connecter pour publier un commentaire.
Il y a 2 étapes: la Première mise à l'échelle de la vue que vous souhaitez agrandir. Ensuite, vous définissez le centre de ce soufflé jusqu'à la vue tels que la partie que vous voulez voir se termine au milieu de la vue.
Vous devez dessiner ce sur le papier et les formules qui va suivre: (non testé)
J'ai effectivement rencontré ce même problème moi-même. Pour le fixer, je n'ai fait changer le point d'ancrage de la vue j'ai été mise à l'échelle, car CGAffineTransforms sont effectuées sur le point de vue par rapport à son point d'ancrage, donc selon l'endroit où le point d'ancrage est, de transformation, de mise à l'échelle, de traduire ou de faire pivoter la vue différemment. Voici l'idée de base: