tengo tener superzoom hacer como aparece activar ios swift imageview

ios - tener - super zoom instagram no aparece



¿Cómo funciona el zoom de Instagram? (3)

No estoy hablando de cómo pellizcar para hacer zoom funciona aquí.

¿Alguien notó el zoom de Instagram? Funciona como un pellizco por defecto para trabajar, pero cuando empiezas a acercarlo, imageView se expande a toda la pantalla del dispositivo, ¿cómo lo hacen tan suavemente? Alguien sabe puede señalar eso?


Una forma de replicar este comportamiento podría ser agregar un UIPinchGestureRecognizer a su UIImageView . A continuación, utilice la propiedad scale del UIPinchGestureRecognizer y UIPinchGestureRecognizer el marco del UIImageView consecuencia. ejemplo



Creé un proyecto simple de Github que hace exactamente lo que buscas. Compruébelo aquí: https://github.com/twomedia/TMImageZoom

Lo logré creando una clase que manejara los cambios de estado de los gestos. Luego creo un UIImageView en la ventana y lo coloco / tamaño a la vista de la imagen original, creando el efecto del usuario acercando el imageView. Aquí hay un pequeño fragmento del enlace de arriba:

-(void) gestureStateChanged:(id)gesture withZoomImageView:(UIImageView*)imageView { // Insure user is passing correct UIPinchGestureRecognizer class. if (![gesture isKindOfClass:[UIPinchGestureRecognizer class]]) { NSLog(@"(TMImageZoom): Must be using a UIPinchGestureRecognizer, currently you''re using a: %@",[gesture class]); return; } UIPinchGestureRecognizer *theGesture = gesture; // Prevent animation issues if currently animating reset. if (isAnimatingReset) { return; } // Reset zoom if state = UIGestureRecognizerStateEnded if (theGesture.state == UIGestureRecognizerStateEnded || theGesture.state == UIGestureRecognizerStateCancelled || theGesture.state == UIGestureRecognizerStateFailed) { [self resetImageZoom]; } // Ignore other views trying to start zoom if already zooming with another view if (isHandlingGesture && hostImageView != imageView) { NSLog(@"(TMImageZoom): ''gestureStateChanged:'' ignored since this imageView isnt being tracked"); return; } // Start handling gestures if state = UIGestureRecognizerStateBegan and not already handling gestures. if (!isHandlingGesture && theGesture.state == UIGestureRecognizerStateBegan) { isHandlingGesture = YES; // Set Host ImageView hostImageView = imageView; imageView.hidden = YES; // Convert local point to window coordinates CGPoint point = [imageView convertPoint:imageView.frame.origin toView:nil]; startingRect = CGRectMake(point.x, point.y, imageView.frame.size.width, imageView.frame.size.height); // Post Notification [[NSNotificationCenter defaultCenter] postNotificationName:TMImageZoom_Started_Zoom_Notification object:nil]; // Get current window and set starting vars UIWindow *currentWindow = [UIApplication sharedApplication].keyWindow; firstCenterPoint = [theGesture locationInView:currentWindow]; // Init zoom ImageView currentImageView = [[UIImageView alloc] initWithImage:imageView.image]; currentImageView.contentMode = UIViewContentModeScaleAspectFill; [currentImageView setFrame:startingRect]; [currentWindow addSubview:currentImageView]; } // Reset if user removes a finger (Since center calculation would cause image to jump to finger as center. Maybe this could be improved later) if (theGesture.numberOfTouches < 2) { [self resetImageZoom]; return; } // Update scale & center if (theGesture.state == UIGestureRecognizerStateChanged) { NSLog(@"gesture.scale = %f", theGesture.scale); // Calculate new image scale. CGFloat currentScale = currentImageView.frame.size.width / startingRect.size.width; CGFloat newScale = currentScale * theGesture.scale; [currentImageView setFrame:CGRectMake(currentImageView.frame.origin.x, currentImageView.frame.origin.y, startingRect.size.width*newScale, startingRect.size.height*newScale)]; // Calculate new center UIWindow *currentWindow = [UIApplication sharedApplication].keyWindow; int centerXDif = firstCenterPoint.x-[theGesture locationInView:currentWindow].x; int centerYDif = firstCenterPoint.y-[theGesture locationInView:currentWindow].y; currentImageView.center = CGPointMake((startingRect.origin.x+(startingRect.size.width/2))-centerXDif, (startingRect.origin.y+(startingRect.size.height/2))-centerYDif); // Reset gesture scale theGesture.scale = 1; } }