Estás configurando el centro de la vista en la esquina superior derecha. Eso significa que estás enfocando en algún lugar hacia la parte inferior izquierda del centro.
probar este
CGAffineTransform tr = CGAffineTransformScale(self.view.transform, 2, 2);
CGFloat h = self.view.frame.size.height;
[UIView animateWithDuration:2.5 delay:0 options:0 animations:^{
self.view.transform = tr;
self.view.center = CGPointMake(0,h);
} completion:^(BOOL finished) {}];
Esto establecerá el centro de la vista ampliada hasta la esquina inferior izquierda, el zoom de manera efectiva en la esquina superior derecha fija.
Este código no tiene la altura codificada, que es un poco más portátil (para un iPad de iPhone 5).
Primero debe guardar h
antes de establecer la propiedad transform
, porque después de eso no debe confiar en el valor de frame
.
edición
Para hacer que funcione para cualquier escala s
, utilice esto:
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) {}];
para hacer que funcione para la parte inferior izquierda, utilice esto:
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*s/2,h-h*s/2);
} completion:^(BOOL finished) {}];
Para hacer funciona para la parte inferior derecha, use esto:
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-h*s/2);
} completion:^(BOOL finished) {}];
Consulte también: How to scale (zoom) a UIView to a given CGPoint
¿Qué pasa con el zoom a puntos arbitrarios? Por ejemplo, en respuesta a un usuario que toca la pantalla? – user978838