Я изучал это несколько дней и пришел к выводу, что в настоящее время нет хорошего способа сделать это.
Во-первых, поместите ваши контакты как прямое подпредставление UIScrollView. Теперь они останутся одинакового размера, но будут перемещаться при увеличении.
В версии ОС> = 3.2 в UIScrollViewDelegate есть -scrollViewDidZoom:, где вы можете обновлять контакты до нужных координат по мере их прокрутки, и это прекрасно работает. Но в 3.1 нам не повезло. Я попытался запустить NSTimer и обновить координаты, но он не работает на устройстве.
В качестве запасного варианта я скрываю контакты при начале масштабирования (viewForZoomingInScrollView) и при завершении масштабирования (scrollViewDidEndZooming), обновляет их координаты и показывает их.