touch.location отзывчивые координаты - PullRequest
0 голосов
/ 11 апреля 2020

Я хочу рассчитать, что touch.location будет реагировать при отправке на другие телефоны.

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    swiped = false
    if let touch = touches.first {
        lastPoint = touch.location(in: self.imageView)
        print (lastPoint.x)
    }
}

Обратите внимание, что черная линия внизу экрана на iPhone 8 центрирована на iPhone 11 Pro Max

on iPhone 8 Simulator on iPhone 8 Simulator

on iPhone 11 Pro Max Simulator on iPhone 8 Simulator

1 Ответ

0 голосов
/ 11 апреля 2020

Прямо сейчас вы делаете что-то вроде этого:

  1. Получите точку от телефона А, которая составляет 100 х 100 пикселей. Точка находится в точке x: 30, y: 40.
  2. Отображение точки на телефоне B, которая составляет 200 x 200 пикселей.

Точка будет ближе к верхнему левому углу. потому что CGPoint (x: 30, y: 40) находится ближе к верхнему левому углу телефона с более высокой плотностью пикселей.

Вместо этого попробуйте следующее: 1. Получите точку от телефона A, которая равна 100 х 100 пикселей. Затем разделите на высоту и ширину. Точка - CGPoint (х: 0,3, у: 0,4). 2. Отобразите точку на телефоне B, умножив ее на ширину и высоту. 0,3 * 200 = 60, 0,4 * 200 = 80. Теперь точка будет отображаться правильно.

Это будет работать только в том случае, если два телефона имеют одинаковое соотношение сторон, в противном случае изображение будет растягиваться для заполнения цели. телефон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...