Прокрутка до прямоугольника при увеличении UIScrollView? - PullRequest
5 голосов
/ 23 июня 2011

У меня есть UIImageView с изображением (картой) внутри UIScrollView. Я добавляю другое изображение (маркер) к виду изображения (например, фон карты и маркер). Если маркер не отображается на экране, когда я размещаю маркер, я хочу прокрутить, чтобы показать маркер.

Я использую [scrollView scrollRectToVisible:rect animated:YES] после размещения маркера на карте. Это прекрасно работает, когда прокрутка не увеличена. Как мне отрегулировать rect в зависимости от масштаба, чтобы маркер находился по центру вида?

1 Ответ

11 голосов
/ 23 июня 2011

Я делаю нечто очень похожее в приложении, над которым я сейчас работаю, но вместо -scrollRectToVisible я использую -setContentOffset.

Поскольку я знаю, где находится мой маркер в кадре, я могу легко рассчитать его центр, который я сохраняю как CGFloats centerX и centerY. Затем я использую следующий код для центрирования маркера на экране (я вычитаю 161 из значения Y, потому что у моего основного вида есть панель вкладок и контроллер навигации, поэтому это не полные 480 точек):

CGFloat curZoom = scrollView.zoomScale;

[scrollView setContentOffset:CGPointMake((centerX*curZoom)-160, (centerY*curZoom)-161) animated:NO];

Умножая центральную точку на текущее масштабирование, я могу найти правильную центральную точку независимо от уровня масштабирования.

Мой маркер - это подпредставление UIImageView, которое содержит мою карту. Похоже, вы делаете это так же, так что я думаю, что это (или что-то подобное) должно работать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...