UIPinchGestureRecognizer. Faire un zoom dans l'emplacement des doigts, pas seulement le centre
Je suis en mesure d'utiliser UIPinchGestureRecognizer
pour faire un zoom avant sur la Vue d'un UICollectionViewCell
, mais il n'est pas question de l'endroit où vous commencer à faire de la UIPinch
geste, toujours le zoom va dans le centre de la vue. Par exemple, je voudrais faire pincer dans le coin supérieur gauche de la vue et le zoom doit être créée dans la position où je touche l'écran. Mais Si je fais ça, le zoom est créé dans le centre de la vue.
C'est le code que j'utilise pour faire des zoom:
if([gesture state] == UIGestureRecognizerStateBegan) {
previousScale = 1.0;
}
if (
[gesture state] == UIGestureRecognizerStateChanged) {
CGFloat currentScale = [[[gesture view].layer valueForKeyPath:@"transform.scale"] floatValue];
//Constants to adjust the max/min values of zoom
const CGFloat kMaxScale = 4.0;
const CGFloat kMinScale = 1.0;
CGFloat newScale = 1 - (previousScale - [gesture scale]); //new scale is in the range (0-1)
newScale = MIN(newScale, kMaxScale / currentScale);
newScale = MAX(newScale, kMinScale / currentScale);
scale = newScale;
CGAffineTransform transform = CGAffineTransformScale([[gesture view] transform], newScale, newScale);
[gesture view].transform = transform;
[self.collectionView.collectionViewLayout invalidateLayout];
}
Alors, comment puis-je choisir la position de la UIPinchGesture?
Grâce
OriginalL'auteur santibernaldo | 2014-04-23
Vous devez vous connecter pour publier un commentaire.
Vous ne sont que l'application de la transformation d'échelle qui vous permettra de toujours garder la vue au centre. En dehors de mise à l'échelle, vous devez également effectuer la traduction basée sur l'expéditeur
locationInView
. Vous pouvez remplacer la fonction ci-dessus avec le code suivant:où dois-je ajouter geste?
ajouter MainView.clipsToBounds=OUI;
OriginalL'auteur Khawar Ali
Je l'ai fait, c'est mon code final:
OriginalL'auteur santibernaldo