ホームページ開発ツール>Big Surのツールバーについて

Big Surのツールバーについて

注:本ページは随時更新します。トップページの最終更新日や更新履歴には反映されませんのでご注意下さい。(更新日:2021.05.11)

追記3(注:1,2はページ末尾)
 Xojo 2021 r1以降では、一体型で表示されることを確認しました。(詳細については、こちらを参照して下さい。)

 Big Surではツールバーの仕様が変更され、タイトルバーとツールバーが統合(以下、一体型)されるようになりました。

 Xcodeは、12からこの仕様変更に対応していて、例えばStoryBoard上にツールバーをドラッグすると、
 Xojoでは手作業で対応することになりますが、いくつかのドキュメントを読む限り、関係するパラメーターは以下のようでした。
注1)toolbarStyle:NSWindowToolbarStyleAutomatic = 0 , NSWindowToolbarStyleExpanded = 1 , NSWindowToolbarStylePreference = 2 , NSWindowToolbarStyleUnified = 3 , NSWindowToolbarStyleUnifiedCompact = 4
 ですが、これらをセットしても期待通りの動作をせず、従来型で表示されてしまいます。
 という訳で、Xcodeでの動作を少し調べてみました。

 ツールバーを付加した直後にブレークポイントを設定してみたところ、ツールバーには_toolbarViewという(privateな)サブビューがあり、その中に_windowTitleViewというサブビューがありました。_windowTitleViewはtoolbarStyle(上記注1参照)が1(=従来型)の時は0x0となり、それ以外では生成されて、その中の_toolbarStyleにtoolbarStyleの値が反映される?、という状況でした。
toolbar
|
+-- _toolbarView
    |
    +-- _windowTitleView(NSWindow.toolbarStyle = 1の時は0x0)
        |
        +-- _toolbarStyle(NSWindow.toolbarStyleを反映?)
 XojoでtoolbarStyle = 3をセットして、同様に調べたところ、_windowTitleViewが&h00000000になっていました。
 つまり、ここが作られていない所為で一体型にならない?、のかもしれません。

 なお、Xojoからはprivateメソッド/プロパティにもアクセスできるので、_toolbarStyleのセットを試みてみましたが、エラーになってしまいました。
(原因は不明ですが、セッターが用意されていない可能性も…)
 いずれにしても、_windowTitleViewの実態がよく分からない(公開情報は皆無の上、Big Surからclass-dumpは使えなくなってしまった)ので、できることは限られてしまいます。

 とは言え、Xcodeは何らかの仕込みをしている筈なので、そのメカニズムが利用できればいい訳ですが、こちらも公開情報が無く、難航しそうではあります。
 とりあえずはこんなところです。

追記1
 (1)ウィンドウとツールバーを生成(2)ツールバーをウィンドウにセット(3)ウィンドウを表示、する一連の処理をdylibとしてビルドしたものを、XojoとXcodeの両方から呼び出してみましたが、Xojoでは従来型、Xcodeでは統合型で表示されました。(つまり、これまでと同じ。)
 dylib化した部分は共通なので、違いが出るのは何処なのか。参照するフレームワークか、リンクするライブラリか、…。

追記2
 otool -Lで、Xcode, Xojoそれぞれでビルドした実行ファイルのFrameworkを調べてみましたが、
 Xcode 12.3
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 2022.20.117)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1770.255.0)
 Xojo 2020 r2.1
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1670.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1555.10.0)
 current versionが異なっていますが、この違いがどう影響するのかは不明です。参考サイト(5)を見ると、使える機能に差が出るのかも、…。
(試しにバイナリエディターで、Xojoの方の上記Frameworkのcurrent versionを書き換えてみましたが、変化なし。)

 さらに継続調査中…。


 参考サイト(1):What’s New in macOS - macOS - Human Interface Guidelines - Apple Developer(Toolbars and Title Barsの項)
 参考サイト(2):Michael Tsai - Blog - macOS Big Sur Changes for Developers
 参考サイト(3):Mac – mackuba.eu(Toolbarsの項)
 参考サイト(4):Big Sur - Declare Help - macOS - Xojo Forum
 参考サイト(5):Dynamic Library Design Guidelines


[Home]  [MacSoft]  [Donation]  [History]  [Privacy Policy]  [Affiliate Policy]