Wie zu skalieren (zoom) ein UIView zu einem bestimmten CGPoint

Habe ich viel Zeit damit verbracht, zu versuchen, einen Weg zu finden zu bedienen CGAffineScale zu verwandeln, eine Ansicht zu einem bestimmten Zeitpunkt, einschließlich Herumspielen mit Anker-Punkte, verschieben Sie das Zentrum der Ansicht vor und nach der Umwandlung und umfassende Googeln. Ich bin mir bewusst, das wäre viel einfacher mit einem UIScrollview; aber ich weiß, dass es technisch möglich ist, zu verzichten, und es ist ein Splitter in meinem Kopf.

Diese Antwort bekommt bemerkenswert nahe an dem, was ich erreichen möchte, aber die Antwort gibt nur details, wie zum Zoomen in eine bestimmte Ecke (anstatt einem Punkt) durch geschickte verschieben von der Mitte zu der Ecke gegenüber, die Sie wollen, zu vergrößern.

Wie kann ich ändern, mvds' code zu skalieren UIView zu einem bestimmten Zeitpunkt in einer 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) {}];

InformationsquelleAutor glenstorey | 2013-08-20

Schreibe einen Kommentar