UIScrollView: расчет смещения содержимого после увеличения - PullRequest
5 голосов
/ 17 октября 2010

Может кто-нибудь посоветовать, какая формула используется для расчета смещения контента после увеличения UIScrollView?Давайте рассмотрим следующий пример: у меня есть UIScrollView с представлением содержимого в размере (1000, 1000), тогда, если я программно setZoomScale до 2,0 и scrollViewDidEndZooming:withView:atScale метод, у меня будет следующее:

contentSize before zoom = {1000, 1000}
contentOffset before zoom = {0, 0}
scale = 2.000000
contentSize after zoom = {2000, 2000}
contentOffset after zoom = {160, 230}

Мне нужно знать, как вычисляется новое значение contentOffset {160, 230}.Есть ли какая-нибудь зависимость формулы, которая использовалась для вычисления смещения содержимого в этом случае?

Спасибо

1 Ответ

8 голосов
/ 17 октября 2010

Это может или не может иметь значение, но учтите, что 160x230 - это половина разрешения iPhone, за вычетом строки состояния: 320x460. Попробуйте изменить кадр UIScrollView или кадр его суперпредставления и посмотрите, как это влияет на числа.

РЕДАКТИРОВАТЬ : Если подумать, вполне логично, что смещение составляет половину размера прокрутки, поскольку оно будет одинаково расширяться в обоих направлениях. Итак, формула будет: contentOffset = (scrollView.frame.size.width/2 * (scaleAfter - scaleBefore), scrollView.frame.size.height/2 * (scaleAfter - scaleBefore)).

Следовательно, если масштаб равен 4.0f, смещение будет: (320/2 * (4-1), 460/2 * (4-1)) => (480, 690). Попробуйте шкалу 4 и посмотрите, выйдет ли (480, 690).

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