以下の図のように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
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。