2009-09-20 7 views
7

Bei dem Versuch, einen Workaround zu erstellen, um ein Bild in einem UIScrollView zu zentrieren und es wie Apples Fotos zu verhalten, muss ich die aktuelle Zoomstufe ermitteln und anhand der Zahl den Betrag berechnen, um den das Bild bei jedem Zoom eingefügt werden soll Niveau.Wie kann ich die aktuelle Zoomstufe in einem UIScrollView erhalten?

(Hinweis: Ich bin mir bewusst, dass einige Programmierer ein Bild in einem Scrollview zentrieren, indem sie das Bild in einer UIView zentrieren, die die gleiche Größe wie der Scrollview hat. Das liefert keine guten Ergebnisse und ich versuche herauszufinden, wie Apfel machte es in der Fotos App funktionieren.)

Also weiß jemand, wie man den aktuellen Zoom-Level des Inhalts in einem UIScrollView bekommen?

Antwort

9

In OS 3.x gibt es eine Eigenschaft namens "zoomScale", die Ihnen geben wird, was Sie wollen. In 2.x, glaube ich, können Sie direkt auf die Transformation von contentView schauen, um diese zu erhalten (aber das ist natürlich nicht "offiziell".)

+0

Ich versuche: NSLog (@ "% d", myScrollView.zoomScale); in meiner ScrollViewDidEndZooming-Methode, aber es wird nur "0". Was mache ich hier falsch? Ich weiß, dass Sie zoomScale als Setter verwenden können, funktioniert aber auch, um die aktuelle Zoomskala zu erhalten? – Jonah

13

Ja, ich habe die Antwort Ihres Problems. Ich denke, dass Sie diese Methode in Ihrer scrollViewController-Klasse verwenden sollten.

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{ 
    NSLog(@"Zoomscale %f",scale); 
     NSLog(@"Zoom End!"); 
} 
Verwandte Themen