Я делаю нечто очень похожее в приложении, над которым я сейчас работаю, но вместо -scrollRectToVisible
я использую -setContentOffset
.
Поскольку я знаю, где находится мой маркер в кадре, я могу легко рассчитать его центр, который я сохраняю как CGFloats centerX
и centerY
. Затем я использую следующий код для центрирования маркера на экране (я вычитаю 161 из значения Y, потому что у моего основного вида есть панель вкладок и контроллер навигации, поэтому это не полные 480 точек):
CGFloat curZoom = scrollView.zoomScale;
[scrollView setContentOffset:CGPointMake((centerX*curZoom)-160, (centerY*curZoom)-161) animated:NO];
Умножая центральную точку на текущее масштабирование, я могу найти правильную центральную точку независимо от уровня масштабирования.
Мой маркер - это подпредставление UIImageView, которое содержит мою карту. Похоже, вы делаете это так же, так что я думаю, что это (или что-то подобное) должно работать для вас.