如何获取点在UIImageView上的点的坐标,使它们在所有设备(不同大小/分辨率)上的相同位置?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取点在UIImageView上的点的坐标,使它们在所有设备(不同大小/分辨率)上的相同位置?相关的知识,希望对你有一定的参考价值。
我之前发现过类似的问题,但没有一个得到满意的回答。我可以获得用户点击的点的坐标,但是如果在具有不同大小和分辨率的不同设备上查看相同图像,则必须恢复相同位置时出现问题。请参阅附图。我必须在用户点击imageView的任何地方放置加号图标。它基本上标记了图像的不同部分。现在,当我尝试将这些加号图标放在同一图像上但使用旧设备坐标在不同设备上时,自然不会映射确切位置。有人可以帮助我使这个标记功能通用或动态,以便可以在每个设备上复制相同的位置吗?
答案
我已经做了你想做的事。可以试试这个。它会帮助你。
- 当你点击
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)
}
以上是关于如何获取点在UIImageView上的点的坐标,使它们在所有设备(不同大小/分辨率)上的相同位置?的主要内容,如果未能解决你的问题,请参考以下文章