みなさん、Xcodeのプレビュー機能は使いこなしていますか? 私の環境では、プレビュー画面が表示されないことが時々あります。
作業しながらSafariのタブを数百ページくらい開いていることもあるので、メモリー不足だとはおもうんですが。
Xcodeを再起動したら治るのかもしれないけど、治らないかもしれないし。まあ、だいたいの場合は直らないんですよね……。
ということで、せっかくiPadもあるので、iPadのPlaygroundでプレビューを表示されてみましょう。それならMacでいくらメモリーを使っていても影響されないですから。
PlaygroundSupportとは
PlaygroundSupportは、Playgroundアプリ単体などで画面を表示することができるようにするサポートライブラリです。
UIViewやNSViewはもちろん、UIViewControllerなどもそのまま表示できるようになります。
ここでは、負荷が重そうなSceneKitのSCNViewを表示してみることにしましょう。
SCNViewの表示
まずは、PlaygroundSupport
を使うので、importをしておきましょう。
それから、表示したいView(ここではSCNView)を作って、それをPlaygroundPage.current.liveView
に設定するだけ。
import PlaygroundSupport // 表示用のSCNViewを作る。 var sceneView = SCNView(frame: CGRect(x: 0, y: 0, width: 300, height: 300)) var scene = SCNScene() sceneView.scene = scene // PlaygroundPageに作ったSCNViewを設定。 PlaygroundPage.current.liveView = sceneView PlaygroundPage.current.needsIndefiniteExecution = true // あとは適当に画面のパーツを作ってsceneに追加してください。
できたPlaygroundファイルを iCloud Drive の Playgroundsフォルダーにコピーすれば、iPadのPlaygroundアプリから開いて動作確認ができます。
これでMacでどんな重い処理が走っていてもプレビューできますね。
全コード
全部のソースコードはこちら。 (iPadのPlaygroundアプリにそのままコピペすれば使えます。)