Проблема с решением @Vladimir заключается в том, что он отображает visibleRect неправильно, если viewForZoom меньше границ ScrollView. Поэтому я придумала это решение.
- (CGRect) zoomedFrame{
CGRect zoomedFrame;
zoomedFrame.origin = self.contentOffset;
zoomedFrame.origin.x -= zoomingView.frame.origin.x;
zoomedFrame.origin.y -= zoomingView.frame.origin.y;
zoomedFrame.size = self.contentSize;
return zoomedFrame;
}
zoomingView
- это представление, которое возвращает viewForZoomingInScrollView:
метод.
bounds
являются границами scrollView.
Итак, есть два случая:
Если zoomingView
меньше, чем bounds
, contentOffset
отражает не верхний левый угол представления содержимого, а некоторый странный сдвиг представления содержимого относительно центра bounds
. И zoomingView.frame.origin
имеет нормальные значения, как если бы zoomingView
были в центре bounds
. ( это происходит, если вы пытаетесь уменьшить масштабирование более чем на minimulScale
)
Когда zoomingView
больше, чем bounds
, zoomingView.frame.origin
имеет странные значения, подобные этому:
{- 6.15367e-06, 3.98168e-06}
И contentOffset
показывает, что должно .
Так что все это компенсирует друг друга, как я показал в своем коде.