Il peut être fait en utilisant deux gestes doigt reconnaisseur: Vous devez simplement écrire: -
-(void)viewDidLoad
{
UIPinchGestureRecognizer *twoFingerPinch = [[[UIPinchGestureRecognizer alloc]
initWithTarget:self
action:@selector(twoFingerPinch:)]
autorelease];
[[self view] addGestureRecognizer:twoFingerPinch];
}
par ce que vous avez initialisé une instance qui prendra soin de deux sensations de doigts sur l'écran (ou vue sur laquelle vous appliquez cette méthode) définir maintenant ce qu'il faut faire si vous avez reconnu les deux doigts:
- (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 il méthode ci-dessus défini est automatiquement appelée non par les actions UIButton mais il permettra de résoudre votre problème avec la simplicité Si vous voulez strictement utiliser le zoom à IBAction puis il suffit de faire ceci:
-(IBAction)methodCalledOnClickingUIButton:(id)sender
{
if(sender==zoomInButton)
{
scaleValue++;
}
else if(sender==zoomOutButton)
{
scaleValue--;
}
CGAffineTransform transform = CGAffineTransformMakeScale(scaleValue,scaleValue);
self.view.transform = transform;
}
Où scaleValue est une valeur flottante .. Vous pouvez configurer ceci en fonction de vos exigences d'application! J'espère que cela fonctionnera bien pour vous! :)
Votre réponse est excellente, mais cela ne fonctionne pas en douceur: chaque fois que vous arrêtez de zoomer - geste de pincement, aucun état n'est sauvegardé et il remet la valeur de recognizer.scale à 0: ainsi, le zoom commencera dès le début à chaque arrêt de la pince. . . . –
Je veux zoomer mais la hauteur/largeur ne peut pas augmenter mais la vue devrait être zoomée. C'est possible? –