我有一个 UIScrollView
。在它上面,我放了一个带有图像的 UIImageView
。现在,我在此 UIImage View 之上添加了另一个 UIView。我想在此 UIView 上添加一些注释。所以我希望能够按下一根手指 3 秒钟,然后在我按下手指的位置应该出现某种图标。这个想法是这个图标显示在 ImageView 中设置的图像上。
现在的问题是,当我缩放已在 UI ImageView 中设置的图像时,图标会以某种方式重新排列,但它不会停留在原来的位置。
示例:我想加载一张骨头的图片,其中有一个区域可能是癌症。如果我知道将注释图标添加到我认为可能存在癌症的位置并在之后重新缩放骨骼,则该图标不再位于我最初标记它的位置。
有人知道我必须做什么吗?
从我想绘制注释图标的 UIView 中提取代码
(void)drawRect:(CGRect)rect {
CGContextRef contextRef = UIGraphicsGetCurrentContext();
//DRAW PIN IMAGE
if(clickPosition.x > 0){
NSLog(@"REACHED...");
UIImage *pin = [UIImage imageNamed:@"Icon_Annotation10.png"];
CGRect pinrect = CGRectMake(clickPosition.x, clickPosition.y, 30, 30);
CGContextDrawImage(contextRef, pinrect, pin.CGImage);//draws image in context
}
}
ScrollView 的设置
// settings for scroll view
scrollView.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height);
scrollView.maximumZoomScale = 4.0;
scrollView.minimumZoomScale = 0.75;
scrollView.clipsToBounds = YES;
scrollView.userInteractionEnabled = YES;
scrollView.delegate = self;
scrollView.scrollEnabled = NO;
最佳答案
我认为您需要将 clickPosition.x 和 clickPosition.y 乘以缩放比例。
您可以通过实现以下 UIScrollViewDelegate 方法来获取比例
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
scale 在此上下文中将是您设置的 minimumZoomScale 和 maximumZoomScale 之间的值。
然后您需要将其传递给绘制图钉的 View 。最好的方法可能是在 View 上有一个 zoomScale 属性,然后在上面的委托(delegate)方法中将该属性设置为新的比例值并重新绘制 View 的内容。
关于ios - 包含 UIScrollView 的缩放后添加到 UIImageView 的注释不在正确的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6503825/