Насколько contentOffset изменяется в UIScrollview для масштабирования? - PullRequest
3 голосов
/ 16 июня 2010

В UIScrollview, когда я прокручиваю / перетаскиваю, я получаю изменения в contentOffset scrollview, которые представляют, сколько я прокручивал / перетаскивал в просмотре прокрутки.Таким образом, я обновил подпредставление scrollview для прокрутки.

Но, когда я масштабирую scrollview (используя масштабирование пинча), contentOffsets scrollview также изменяется.Я не понимаю, насколько изменился contentOffset, потому что я не могу связать изменения со значением zoomScale.Итак, есть ли способ узнать изменения в contentOffset для масштабирования?

Мое намерение состоит в том, чтобы получить значение изменений contentOffset для перетаскивания при масштабировании (чего нет у меня из-за изменения масштаба смещения содержимого), чтобы я могсоответственно обновите подпредставление моего прокрутки.

Я застрял здесь.Любая помощь будет очень ценится.

спасибо

Шайкот

1 Ответ

6 голосов
/ 05 октября 2012

Я настроил небольшой тестовый проект, и похоже, что contentOffset умножается на zoomScale.Поэтому, если вы хотите учесть это, просто поделите его на zoomScale перед его использованием.

Может быть, лучше проиллюстрировать это на небольшом примере: я настроил scrollView и добавил достаточно большой вид для панорамирования и небольшого увеличения.К этому представлению я добавил маленький красный вид, который я хочу сохранить в том же положении, несмотря ни на что.Я наблюдаю свойство contentOffset scrollView, и я реализовал его следующим образом:

CGPoint contentOffset = self.scrollView.contentOffset;
CGFloat zoomScale = self.scrollView.zoomScale;

self.moveView.frame = CGRectMake((contentOffset.x+10)/zoomScale,
                                 (contentOffset.y+10)/zoomScale,
                                 10,
                                 10);

Это сохраняет MoveView в том же положении на экране, масштабируя его только тогда, когда пользователь увеличивает.1008 *

Я надеюсь, что это немного прояснит ситуацию, но дайте мне знать, если я смогу сделать больше, чтобы помочь.

...