SwiftでOS XのCGContextを取得する

Swiftについて、知ってる本で読んだのレベルからさわったことがあるのレベルにそろそろ移行しなければと思い立ち、簡単なアプリを作ってみることにしました。

しかも、iOSではなくOS Xで。

XcodeでMac用アプリの新規プロジェクトを選ぶと作られるテンプレートは、AppDelegateクラス、ViewControllerクラスにStoryboard + Auto Layoutと、ほとんどiOSと一緒のものでした。これならiOSのノウハウが使えるに違いないと思いつつ、さらにカスタムビューを作ってdrawRectで円を描画してみようとしたら、これがまたどうやってSwiftでOS Xのグラフィックスコンテキストを取得するのか全然わからないという。

Stack Overflowやら英語圏の方のブログとかをさまよって色々と試すも、参考にしたコードはビルドエラーやらランタイムエラーやらが出て簡単には解決に至らず、諦めて一旦放置することに。

一週間後に再び調査を開始。

Stack Overflowでそれっぽい話題を見つけました。その話題の回答にあるコードをいくつか試して行ったところ結局、SwiftでOS Xのグラフィックスコンテキストを取得するには、

let context = NSGraphicsContext.currentContext()?.CGContext

でした。でもこのプロパティはYosemite以降でしかサポートしていないそうです。

これさえ動いてしまえば、後はなんとかなります。…というかなんとかなりました。完成したポンコツ時計アプリのソースコードを GitHub に置いておきます。

FineWatch

似て非なるものっていうのが一番やりにくいですね。

コメントを残す