在滚动视图iOS中制作位置指示器“地图”

时间:2012-07-20 10:11:00

标签: ios uiscrollview position

我有一个包含大图像大小的滚动视图的视图,我想在滚动视图中添加一个位置指示器,就像游戏中的地图一样。

我在滚动视图顶部创建了一个较小的视图,其中包含较小版本的图像,我想知道如何相对于我较小的滚动视图缩放比例的大小和位置添加一个矩形查看,在小图像上指示您当前正在查看的较大图像的哪一部分?我使用ARC瞄准iOS 5+。

这就是我到目前为止所看到的 - 它似乎正确地设置了原点,但是当我缩放时它会变大,当它应该变大时,反之亦然:

int scrollxint = self.scrollView.bounds.origin.x;
int scrollyint = self.scrollView.bounds.origin.y;
int scrollxlength = self.scrollView.contentSize.width;
int scrollylength = self.scrollView.contentSize.height;

int reducedscrollxint = (scrollxint*0.05);
int reducedscrollyint = (scrollyint*0.05);
int reducedscrollxlength = (scrollxlength*0.05);
int reducedscrollylength = (scrollylength*0.05);

areaFrame.frame = CGRectMake(reducedscrollxint, reducedscrollyint, reducedscrollxlength, reducedscrollylength);
[self.mapView addSubview:areaFrame];

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我不得不使用相对于区域指示器原始大小的缩放比例来实现这一点,但这段代码对我有用:

int scrollxint = self.scrollView.bounds.origin.x;
int scrollyint = self.scrollView.bounds.origin.y;

float scale = self.scrollView.zoomScale;

int reducedscrollxint = (scrollxint*0.05);
int reducedscrollyint = (scrollyint*0.05);


areaFrame.frame = CGRectMake(reducedscrollxint, reducedscrollyint, (10/scale), (6.5/scale));
[self.mapView addSubview:areaFrame];