以下の図のようにTitlebarAccessoryViewControllerの下に余白ができます。
TitleBarControllerの実装は以下です。
swift
1class ASToolbarController: NSTitlebarAccessoryViewController { 2 override func loadView() { 3 self.view = NSView(frame: .init(size: [10, 50])) // [10, 50]サイズのView 4 self.view.wantsLayer = true 5 self.view.layer?.backgroundColor = NSColor.red.cgColor 6 } 7}
これをWindowDidLoadで設定しています。
(親クラスのAxDocumentWindowControllerはUIには一切触っていません。)
swift
1class ASWindowController: AxDocumentWindowController { 2 private let toolbarController = ASToolbarController() 3 4 override func windowDidLoad() { 5 super.windowDidLoad() 6 self.window?.addTitlebarAccessoryViewController(toolbarController) 7 } 8}
そもそもTitlebarAccessoryView自体が新しいAPIなので、Appleのバグの可能性もありそうですが、もし解決方法などご存知でしたらお願いします。
とりあえず試したことを書いていきます。
実は裏でsizeが変更されていないかのチェック。
Sizeは変更されておらず、設定したTitlebarAccessoryViewの親Viewである、NSTitleBarViewの時点でずれている。

他のsizeを設定するとどうか?
TitlebarAccessoryViewの高さ10で実験。
先ほどより小さい余白が確認できた。
やはりAppKitのバグか...?
他のTitlebarAccessoryViewが挿入されていないか
以下のコードで確認
swift
1Timer.scheduledTimer(withTimeInterval: 1, repeats: false) {_ in 2 print(self.window?.titlebarAccessoryViewControllers) 3}
明らかに存在していない。
Optional([<AxStudio.ASToolbarController: 0x60000390f0c0> - NSLayoutAttributeBottom])
また、他のTitlebarAccessoryViewの使用例をみるとほとんどがToolBarとの並列仕様である。
もしかしてToolBarなし+TitlebarAccessoryViewが想定されていない...?
Documentを読んでみる。
DocumentにToolBarとの関係について特段の記載はなかった。
また、フルスクリーンにして戻すと余白がなくなるという挙動を確認した。
以上を持ってこれはAppKitのバグと判断し、TitlebarAccessoryViewの使用をやめることにする。
回答1件
あなたの回答
tips
プレビュー


バッドをするには、ログインかつ
こちらの条件を満たす必要があります。