2010-10-17 2 views
4

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

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}. Существует ли зависимость формулы, используемая для вычисления смещения содержимого в этом случае?

Благодаря

ответ

8

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

EDIT: Подумайте об этом, имеет смысл, что смещение в два раза меньше размера прокрутки, так как оно будет равномерно расширяться в обоих направлениях. Таким образом, формула будет: 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).

+0

Большое спасибо, Дэвид! Это то, что мне нужно. – user478681