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 "