Ich kann UIPinchGestureRecognizer
für das Zoomen in der Ansicht eines UICollectionViewCell
verwenden, aber es spielt keine Rolle, wo Sie anfangen, die UIPinch
Geste zu machen, immer der Zoom geht in der Mitte der Ansicht. Zum Beispiel möchte ich im oberen linken Bereich der Ansicht eine Quetschung machen, und der Zoom muss in der Position erzeugt werden, in der ich den Bildschirm berühre. Aber wenn ich das tue, wird der Zoom in der Mitte der Ansicht erstellt.UIPinchGestureRecognizer. Machen Sie Zoom-Position von Fingern, nicht nur in der Mitte
Dies ist der Code, den ich für die Herstellung von Zoom verwenden:
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];
}
Wie kann ich die Position des UIPinchGesture wählen?
Dank
Hallo Khawar, nachdem diese implementieren, ich bin ein weiteres Problem mit mit dem Übersetzen . Die Ansicht, die ich transformiere, verlässt die Grenzen der Hauptansicht, und ich möchte wissen, welche Bedingung ich prüfen muss, um dies zu vermeiden, und die Transformation CGAffineTransformIdentity in die Gestenansicht implementieren. Ich habe eine Frage gestellt, hier ist es die Verbindung mit einem GIF, das das Problem darstellt: http://stackoverflow.com/questions/23269622/prevent-uicollectionviewcell-view-of-going-off-screen-after-zooming-with-uipinch. Danke – santibernaldo
@khawarAli wo sollte ich Geste hinzufügen? – Dalvik
hinzufügen MainView.clipsToBounds = YES; –