Ruft den gezoomten Rahmen von UIScrollView relativ zur Originalgröße ab

8

Ich habe ein UIScrollView und habe ein UIView darin eingefügt, wenn ich es zoome, ist es möglich, den CGRect des gezoomten Rahmens in Bezug auf den ursprünglichen Rahmen zu erhalten?

z. Ich habe 800x600 Rahmen, dann zoomte ich auf {{50, 60}, {100, 100}} ist es möglich, den gezoomten Rahmen programmgesteuert zu bekommen?

    
Manny 04.10.2010, 08:17
quelle

2 Antworten

8

Ich verwende normalerweise die folgende Methode (die der benutzerdefinierten UIScrollView-Kategorie hinzugefügt wurde):

%Vor%     
Vladimir 04.10.2010, 08:24
quelle
5

Das Problem mit der @ Vladimir-Lösung ist, dass visibleRect falsch angezeigt wird, wenn viewForZoom kleiner als ScrollView-Grenzen ist. Also kam ich auf diese Lösung.

%Vor%

zoomingView ist eine Ansicht, die die Methode viewForZoomingInScrollView: zurückgibt.
bounds sind Begrenzungen von scrollView.

Es gibt also zwei Fälle:

  1. Wenn zoomingView kleiner ist als bounds , spiegelt contentOffset nicht die linke obere Ecke der Inhaltsansicht wider, sondern eine seltsame Verschiebung der Inhaltsansicht relativ zur Mitte von bounds . Und zoomingView.frame.origin hat normale Werte, als wäre zoomingView in der Mitte von bounds . ( das passiert, wenn Sie versuchen, die Zoom-Ansicht um mehr als minimulScale zu verkleinern)

  2. Wenn zoomingView größer als bounds ist, hat zoomingView.frame.origin seltsame Werte wie folgt:

      

    {- 6.15367-06, 3.98168-06}

    Und contentOffset zeigt, was es sollte .

So kompensieren sich alle gegenseitig, wie ich in meinem Code gezeigt habe.

    
DanSkeel 25.05.2012 18:29
quelle