Как получить координаты точки, повернутые в UIImageView, чтобы они находились в одинаковом положении на всех устройствах (разного размера / разрешения)? - PullRequest
0 голосов
/ 01 мая 2019

Я уже встречал подобные вопросы, но ни на один не получил удовлетворительного ответа.Я могу получить координаты точки, в которой пользователь нажимает, но моя проблема возникает, когда необходимо восстановить одну и ту же позицию, если одно и то же изображение просматривается на другом устройстве с другим размером и разрешением.Пожалуйста, обратитесь к приложенному изображению.Я должен поставить значки плюс везде, где пользователь нажимает на imageView.Его маркировка различных частей изображения в основном.Теперь, когда я пытаюсь разместить значок плюса на том же изображении, но на другом устройстве, используя координаты более старого устройства, естественно, точное положение не отображается.Может ли кто-нибудь помочь мне сделать эту функцию тегов общей или динамичной, чтобы можно было реплицировать одну и ту же позицию на каждом устройстве? enter image description here

1 Ответ

3 голосов
/ 01 мая 2019

Я сделал так же, как вы хотите. Можете ли вы попробовать это.это поможет вам.

  • Когда вы нажимаете на 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)
}
...