рамка.шалунья не дает правильных результатов с несколькими мониторами

#swift #macos

Вопрос:

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

Поэтому, если я перетащу окно слева от встроенного экрана, оно покажет 0.0 (идеально), я перетащу окно слева от внешнего экрана, оно покажет -219.0

Я хочу, чтобы он сообщал о правильном положении на экране, в котором он находится в данный момент.

Мой код приведен ниже:

  @objc func windowDidMove(_ notification: Notification) {          // NSWindowDelegate function
   
      let newXposition = self.view.window!.frame.minX // this gets pixel count from left of app window to left of screen
        
      print("windowDidMove new origin:", newXposition) 
    }
 

Любые идеи были бы великолепны.

Комментарии:

1. NSScreen имеет ряд методов преобразования прямоугольников из глобального пространства экрана в координатное пространство конкретного экрана. Посмотрите документацию NSScreen в разделе «Преобразование координат задней части экрана».