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

Gha*_*lah 1 tags uiimageview ios

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

Man*_*cal 5

我有你想要的一样的。你能试试这个吗?它会帮助你。

  • 当您点击UIImageView时,我找到了 的接触点。UIImageView您必须计算UIImageView基于height和的百分比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)
}
Run Code Online (Sandbox Code Playgroud)