2011-02-17 21 views

Respuesta

25

Se puede hacer uso de dos dedos gesto reconocedor: Tienes que acaba de escribir: -

-(void)viewDidLoad 
{ 
UIPinchGestureRecognizer *twoFingerPinch = [[[UIPinchGestureRecognizer alloc] 
              initWithTarget:self 
              action:@selector(twoFingerPinch:)] 
              autorelease]; 

[[self view] addGestureRecognizer:twoFingerPinch]; 
} 

En esto han inicializado una instancia que se encargará de dos sensaciones de los dedos en la pantalla (o Vista en el que se está aplicando este método) Ahora defina qué hacer si ha reconocido los dos dedos:

- (void)twoFingerPinch:(UIPinchGestureRecognizer *)recognizer 
{ 
    NSLog(@"Pinch scale: %f", recognizer.scale); 
    CGAffineTransform transform = CGAffineTransformMakeScale(recognizer.scale, recognizer.scale); 
             // you can implement any int/float value in context of what scale you want to zoom in or out 
    self.view.transform = transform; 
} 

T lo anterior método definido no se llama automáticamente a través de las acciones UIButton pero se va a resolver su problema con la simplicidad Si estrictamente desea utilizar el zoom en IBAction luego simplemente hacer esto:

-(IBAction)methodCalledOnClickingUIButton:(id)sender 
{ 
    if(sender==zoomInButton) 
    { 
     scaleValue++; 
    } 
    else if(sender==zoomOutButton) 
    { 
     scaleValue--; 
    } 
    CGAffineTransform transform = CGAffineTransformMakeScale(scaleValue,scaleValue); 
    self.view.transform = transform; 
} 

Dónde scaleValue es cualquier valor flotante .. ¡puede configurar esto de acuerdo con los requisitos de su aplicación! ¡Espero que funcione bien para usted! :)

+1

Tu respuesta es genial, pero esto no hace zoom suavemente: Es decir cada vez que dejas de acercar - gesto de pellizco, no se guarda ningún estado y restablece recognizer.scale a 0: por lo tanto, se iniciará el zoom desde el principio cada vez que se detiene el movimiento. . . . –

+0

quiero ampliar pero la altura/ancho no puede aumentar, pero la vista debe ser zoom. ¿Es posible? –

1

Swift 3, 4+

// Detectar zoom in/out por dos dedos de UIView, aquí ejemplo escuchar en vista principal (vista)

//override func viewDidLoad() { 

    var pinchGesture = UIPinchGestureRecognizer() 
    pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(pinchedView)) 
    view.isUserInteractionEnabled = true 
    view.addGestureRecognizer(pinchGesture) 

//} 

// Listener

@objc func pinchedView(sender:UIPinchGestureRecognizer){ 
    if(sender.scale > 1){ 
     print ("Zoom out") 
    }else{ 
     print("Zoom in") 
    } 
} 
Cuestiones relacionadas