Расположение UIButton при масштабировании UIScrollView - PullRequest
0 голосов
/ 10 августа 2010

У меня есть, так сказать, «взгляд на мир», который состоит из большой, масштабируемой области в UIScrollView. Я хочу, чтобы несколько кнопок сохранили свое местоположение в мире, когда я ущипнул, чтобы увеличить, так же, как контакты в Google Maps. Код, который я пробовал (я кодировал в течение нескольких часов, но я думаю, что он звучит правильно ... хотя я, возможно, просто сгорел):

- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
    CGPoint center = button.center;
    center.y = center.y * scrollView.zoomScale;
    center.x = center.x * scrollView.zoomScale;
    button.center = center;
    NSLog(@"Button coordinates are %f, %f, zoomScale is %f", button.center.x, button.center.y, scrollView.zoomScale);
}

Кто-нибудь может увидеть, что я делаю не так?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 10 августа 2010

Я решил это, установив CGPoint 'center' только один раз, при загрузке просмотра, а затем вычислив новую центральную точку на основе исходного местоположения..

1 голос
/ 08 октября 2012

Вам не нужно делать всю математику самостоятельно. Базовый класс UIScrollView, UIView, имеет четыре метода для преобразования между системами координат, которые в случае UIScrollView учитывают масштабирование и панорамирование:

– convertPoint:toView:
– convertPoint:fromView:
– convertRect:toView:
– convertRect:fromView:

См. Документацию UIView по адресу http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html

...