OStack程序员社区-中国程序员成长平台

标题: ios - 包含 UIScrollView 的缩放后添加到 UIImageView 的注释位置不正确 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 16:39
标题: ios - 包含 UIScrollView 的缩放后添加到 UIImageView 的注释位置不正确

我有一个 UIScrollView。在它上面我放了一个带有图像的 UIImageView 。现在我在这个 UIImage View 之上添加了另一个 UIView。在这个 UIView 上,我想添加一些 Annotations。所以我希望能够按下一根手指3秒钟,然后在我按下手指的位置应该会出现某种图标。想法是这个图标显示在 ImageView 中设置的图像上。

现在的问题是,当我缩放在 UI ImageView 中设置的图像时,图标会以某种方式重新排列,但它不会停留在原来的位置。

示例:我想加载一张可能是癌症区域的骨头图片。如果我知道将注释图标添加到我认为可能存在癌症的位置并在之后重新缩放骨骼,则图标不再位于我最初标记它的位置。

有人知道我要做什么吗?

从 UIView 中提取我想绘制注释图标的代码

(void)drawRectCGRect)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;



Best Answer-推荐答案


我相信您需要将 clickPosition.x 和 clickPosition.y 乘以缩放比例。

你可以通过实现如下 UIScrollViewDelegate 方法来获取比例

- (void)scrollViewDidEndZoomingUIScrollView *)scrollView withViewUIView *)view atScalefloat)scale

scale 在此上下文中将是您设置的 minimumZoomScale 和 maximumZoomScale 之间的值。

然后您需要将其传递给绘制图钉的 View 。最好的方法可能是在 View 上有一个 zoomScale 属性,然后在上面的委托(delegate)方法中将该属性设置为新的比例值并重绘 View 的内容。

关于ios - 包含 UIScrollView 的缩放后添加到 UIImageView 的注释位置不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6503825/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4