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?
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:
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)
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.
Tags und Links objective-c iphone uiscrollview