Я начинаю новый проект в Xcode 9 (игра для macOS с технологией SceneKit). Я получил раскадровку, содержащую NSWindowController
с NSWindow
и связанную GameViewController
с SCNView
. Проект работает нормально (крутит самолет).
Теперь в раскадровке я устанавливаю значение автосохранения на «MainWindow» для NSWindow
, запускаю проект, изменяю размер окна и затем выхожу. Я знаю, что с установленным автосохранением при выходе положение окна будет сохранено с помощью NSUserDefaults
, поэтому я проверяю в Терминале:
$ defaults read com.koati.Bloks ⏎
{
"NSWindow Frame MainWindow" = "415 228 450 322 0 0 1280 777 ";
}
Это ожидаемое поведение. Теперь я запускаю проект еще раз, но вижу, что положение окна не восстанавливается. Если в раскадровке удалить отношение GameViewController
, то позиция сохраняется и восстанавливается корректно, поэтому я предполагаю, что GameViewController
как-то влияет на размер и позицию окна. В более старых Xcode с XIB такой проблемы не было.
EDIT: После некоторых тестов я теперь думаю, что это вообще не связано со SceneKit, так как замена SCNView
на NSView
в NSViewController
дает те же результаты. Итак, я думаю, проблема в том, что NSViewController
, прикрепленный через раскадровку к содержимому NSWindow
, влияет на положение и размер окна.
Может кто знает как решить эту проблему?