Apple から新型 MacBook Pro が発表され、iOS エンジニア界隈は盛り上がりましたね。新型 MacBook Pro は高性能な M1 Pro チップやさらに高性能な M1 Max チップが搭載されたり、Touch Bar が立場を失ってリストラされたり、高品質なスピーカーが搭載されたり、HDMI ポートや SD カードスロットが復活したりと様々注目ポイントがありますが、パッと見でもわかる変化としては iPhone のようにディスプレイにノッチが採用されたことが大きいのではないでしょうか?
ということで、世界的に見ると何番煎じかわかりませんが、例に漏れず私も macOS アプリ開発者の端くれとしてノッチが体験できるクソアプリを作って体験してみました。
iNotch
Releases からアプリをダウンロードして試せます。
技術要約
-
NSScreen.main.frameで画面の中央上部の座標を算出 -
NSPanelで最前面に透明なウインドウを固定-
styleMaskに[.borderless, .nonactivatingPanel]を指定 -
levelを.popUpMenuに指定 -
hasShadow = falseでパネルの影を消す
-
-
NSViewでNSBezierPathを描画してノッチを再現 - ノッチへのクリックを
mouseDownで取得してCombineのPassthroughSubjectを使ってイベント伝搬
所感
ノッチは結構威圧感があって邪魔ですね 😅
Swift Combine の練習としては良かったと思います。
- item
- item
- item "
