UIScrollView / UIView Проблема масштабирования - PullRequest
0 голосов
/ 24 февраля 2011

мое приложение имеет UIScrollView с UIView в качестве подпредставления.Оба имеют одинаковый размер.ScrollView содержит большое изображение, а подпредставление является представлением «наложения», которое содержит маркеры, которые устанавливаются, когда пользователь нажимает на большое изображение (карту).В основном это простое приложение, которое позволяет устанавливать маркеры в определенных местах на карте.

пока все хорошо.Настройка маркеров и прокрутка scrollView работает (маркеры сохраняют положение на карте).Однако осталась одна проблема.При увеличении / уменьшении масштаба маркеры (в режиме наложения) расположены неправильно (маркеры перемещаются в верхний левый угол при увеличении).Я уже пытался преобразовать позиции маркера с помощью метода convertPoint (), но, к сожалению, безуспешно.

Моя иерархия UIView выглядит так:

[mapScrollView addSubview:mapImageView]; // mapScrollView obviously is the scrollview. it holds
                                         // an UIView with an image (map).

[mapScrollView addSubview:mapImageAnnotationView]; // UIView that holds annotations (markers)

[mapImageView addGestureRecognizer:singleTap]; // handle taps
[mapImageView addGestureRecognizer:doubleTap];
[mapImageView addGestureRecognizer:twoFingerTap];

[self addSubview:mapScrollView]; // self is the container UIView that holds the composition

Настройка размера / границы:

mapImageView = [[UIImageView alloc] initWithImage: mapImage]; // init with image file
mapScrollView.contentSize = CGSizeMake(mapImageView.frame.size.width,mapImageView.frame.size.height);
mapScrollView.clipsToBounds = YES;

mapImageAnnotationView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, mapImageViewWidth, mapImageViewWidth)];

Кто-нибудь может указать мне правильное направление, чтобы решить эту проблему?

спасибо

1 Ответ

4 голосов
/ 25 февраля 2011

Какое представление вы возвращаете в методе делегата viewForZoomingInScrollView?

Вы должны поместить свою карту и ваши наложения в одно и то же суперпредставление, добавить суперпредставление в представление прокрутки и затем вернуть это суперпредставление в методе делегата

...