如何获取点在UIImageView上的点的坐标,使它们在所有设备(不同大小/分辨率)上的相同位置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取点在UIImageView上的点的坐标,使它们在所有设备(不同大小/分辨率)上的相同位置?相关的知识,希望对你有一定的参考价值。

我之前发现过类似的问题,但没有一个得到满意的回答。我可以获得用户点击的点的坐标,但是如果在具有不同大小和分辨率的不同设备上查看相同图像,则必须恢复相同位置时出现问题。请参阅附图。我必须在用户点击imageView的任何地方放置加号图标。它基本上标记了图像的不同部分。现在,当我尝试将这些加号图标放在同一图像上但使用旧设备坐标在不同设备上时,自然不会映射确切位置。有人可以帮助我使这个标记功能通用或动态,以便可以在每个设备上复制相同的位置吗?enter image description here

答案

我已经做了你想做的事。可以试试这个。它会帮助你。

  • 当你点击UIImageView的时候我找到了UIImageView的接触点。你需要根据UIImageViewheight计算width的百分比,所以它适用于所有设备。
//Your imageView add tapGestureRecognizer event

  imageView.isUserInteractionEnabled = true
  let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapAction))
  self.imageView.addGestureRecognizer(tapGestureRecognizer)

 @objc func tapAction(sender: UITapGestureRecognizer) {

      let touchPoint = sender.location(in: self.imageView)
      print(touchPoint)

      var z1 = touchPoint.x
      var z2 = touchPoint.y
      print("Before Alert Touched point ((self.z1), (self.z2)")

      //convert point into Percentage
      let z1per =  z1 * 100 / self.imageView.frame.size.width
      let z2per =  z2 * 100 / self.imageView.frame.size.height

      print("After Alert Touched point ((self.z1per), (self.z2per)")


  //whatever you want to add like button or image on tap action.

    let btn = UIButton(frame: CGRect(x: touchPoint.x - 15, y: touchPoint.y - 15, width: 30, height: 30))
    btn.layer.cornerRadius = 15
    btn image = UIImage(named: "marker.png") as UIImage?
    btn.setImage(image, for: .normal)
    self.imageView.addSubview(btn)
}

以上是关于如何获取点在UIImageView上的点的坐标,使它们在所有设备(不同大小/分辨率)上的相同位置?的主要内容,如果未能解决你的问题,请参考以下文章

数学中一个点在直角坐标系中绕原点旋转90或180度后的坐标怎么求?

codeforces 183B - Zoo

如何判断一个点在一个矩形里边,一直点和矩形的坐标点位置。

怎样把百度地图上的点的经纬度 转换成wgs⑻4坐标呢

使用来自两个自旋向量的点在球体上插值 x、y、z 坐标?

Problem E: 点在圆内吗?