• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 包含 UIScrollView 的缩放后添加到 UIImageView 的注释位置不正确

[复制链接]
菜鸟教程小白 发表于 2022-12-12 16:39:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap