前回から、iOSアプリの最も基本的な要素であるビュー(UIView)にアクセスできるようになり、そこにグラフィックを描き始めています。そこでは、ビューに自由にグラフィックを描くための1つの方法として、UIViewクラスに含まれるdrawメソッドを独自に置き換える手法を使いました。今回もそれをさらに探求していきましょう。
前回は、まず長方形を定義し、その長方形の領域の中にぴったり収まる楕円を描くという、かなり基本的な方法を示しました。その際には、UIBezierPathというベジェ曲線を表すパスを使いました。しかし、元が単純な長方形だけに、ベジェ曲線とか、パスを扱っているという印象は薄かったでしょう。長方形を基にしてパスを描く方法だけでは、ベジェ曲線という自由度の高い描画方法のメリットもほとんどないと言えます。
今回は、このベジェ曲線のパスを自由に使う手法を追求してみます。実はこのiOSのグラフィック機能は、PostScriptやPDFの内部で使われているのと基本的に同じものなのです。歴史も古く、いわば伝統的な技術ですが、高精度な図形を手軽に描くことができる、今でもなくてはならない描画方法です。
UIBezierPathのドキュメントを確認する
UIViewや、そのdrawメソッドという、iOSネイティブな方法を使えるようになったということは、iOSのアプリプログラミングに関する情報が、そのままこのSwift Playgroundsにも適用できることを意味しています。前々回まで使っていたSwift Playgrounds固有の環境では得られない大きなメリットです。
さっそくAppleのデベロッパーサイトにあるAPI Referenceのページを開いて、UIBezierPathに関するドキュメントを探してみましょう。URLがわからなくても、「swift uibezierpath reference」などで検索すればすぐに見つかるはずです。
このページは、用例などはなく、コンパクトにまとめられたリファレンスですが、ざっと目を通すと、UIBezierPathでできることがだいたいわかります。それによると、パスの作り方には、大別して2種類あります。1つは、前回も使った長方形を基準にして、その内側に収まるパスを作るもの。もう1つは、座標を順に指定して自由なパスを作るものです。そして、それぞれの中にまた何種類もの方法が用意されています。
今回はまず、長方形を使った方法の中で、前回とは違った方法を示し、その後、自由な形状のパスを作る方法に踏み込みます。
この連載の記事
- 第100回 SceneKitの物理現象シミュレーションとアニメーションをARKitに持ち込む
- 第99回 「物理学体」と「物理学場」を設定して物理現象をシミュレーション
- 第98回 SceneKitのノードに動きを加えるプログラム
- 第97回 いろいろな形のノードをシーンの中に配置する
- 第96回 SceneKitの基礎シーンビュー、シーン、ノードを理解する
- 第95回 現実世界の床にボールや自動車のモデルを配置する
- 第94回 ARKitを使って非現実世界との融合に備える
- 第93回 ARKitが使えるiPadを識別するプログラム
- 第92回 Swift Playgrounds 2.1での問題点をまとめて解消する
- 第91回 iPadの内蔵カメラで撮影した写真を認識するプログラム
- この連載の一覧へ