У меня есть NSWindowController
с NSWindow
, у меня возникла проблема, когда, если я установлю contentViewController
контроллера, кадр NSWindow
обновится выше моих ожиданий
- Окно в начале координат, скажем, (500 500), а его размер (100 100)
- Я перетаскиваю его на (300 300)
- Я нажимаю элемент управления, который обновляет
contentViewController
- Размер остается на (100,100), но источник возвращается к (500, 500)
Все окно остается того же размера, но оно просто возвращается к исходной позиции
Это код, который обновляет фрейм
self.contentViewController = loadingViewController
Я подтвердил это, распечатав фрейм окна в lldb, до и после этой строки:
▿ Optional<CGRect>
▿ some : (-1701.0, 439.0, 1042.0, 778.0)
▿ origin : (-1701.0, 439.0)
- x : -1701.0
- y : 439.0
▿ size : (1042.0, 778.0)
- width : 1042.0
- height : 778.0
(lldb) po self.window?.frame
▿ Optional<CGRect>
▿ some : (-1680.0, 416.0, 800.0, 778.0)
▿ origin : (-1680.0, 416.0)
- x : -1680.0
- y : 416.0
▿ size : (1042.0, 778.0)
- width : 1042.0
- height : 778.0
Что дажеболее загадочным является то, что я изначально пробовал 3 отдельных места, чтобы поймать окно, перемещающееся, чтобы найти строку кода, вызывающую его
Я зарегистрировался в качестве наблюдателя:
NotificationCenter.default.addObserver(self, selector: #selector(windowMoved(notification:)), name: NSWindow.didMoveNotification, object: nil)
, а также установил символическоеточки останова на:
- [NSWindow _windowMoved:] и - [NSWindow _setFrame:]
Все 3 из этих методов улавливали движение окна, когда я вручную перетаскивал окно.
Однако ни один из 3 не уловил движение окна, когда кадр был программно изменен из этой одной строки кода.выше ^^
Кто-нибудь видел это раньше или имеет представление о том, как это может быть?