0

Ich habe eine Bildansicht, die ich zum Neuskalieren kneifen möchte, ohne das Seitenverhältnis beizubehalten. Um dies zu tun, dachte ich, es wäre möglich, entweder:Verwenden von 2 UIPinchGestureRecognizers auf der gleichen UIImageView

  1. Verwenden Sie zwei Pinch Geste Erkenner, eine, die horizontal streckt, eine, die so vertikal tut.
  2. Verwenden Sie einen Pinch-Erkenner, wenden Sie die beiden Transformationen jedoch nacheinander an.

Hier ist meine Prise Handling Funktion:

- (void) pinch:(UIPinchGestureRecognizer *)recognizer { 
    static CGRect initialBounds; 

    if (recognizer.state == UIGestureRecognizerStateBegan) 
    { 
     initialBounds = imageView.bounds; 
    } 
    CGFloat factor = [(UIPinchGestureRecognizer *)recognizer scale]; 

    //scale horizontally 
    CGAffineTransform zt = CGAffineTransformScale(CGAffineTransformIdentity, 
                factor-(1.0-factor), 1.0); 
    imageView.bounds = CGRectApplyAffineTransform(initialBounds, zt); 

    //now scale vertically 
    zt = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, factor); 
    imageView.bounds = CGRectApplyAffineTransform(initialBounds, zt); 
    return; 
} 

Aus irgendeinem Grund wird die Transformation nur vertikal (letzte) getan. Ich habe versucht, den ersten Parameter der zweiten CGRectApplyAffineTransform in imageView.Bounds zu ändern, aber es hat immer noch nicht funktioniert.

Kann mir bitte jemand sagen, wo ich falsch liege?

Bei der Verwendung von zwei Pinch-Gesten-Erkennern passiert das gleiche - nur einer von ihnen wird tatsächlich erkannt.

Danke!

Antwort

0

Ihre zweite beginnt mit einer CGAffineTransformIdentity. Übergeben Sie stattdessen das zt.

Verwandte Themen