iPhone/cookbook

Last-modified: 2010-10-22 (金) 15:02:41

~126

 内容的には、ビューと、ビューコントローラーの部分

○ビューはさまざまな形状にクリップできる(円や楕円であればCGPathAddEllipseInRectを使用)

○タッチ判定はビューの形状と独立している

○タッチ判定は、計算式で判定する方法とピクセルのアルファ値で判定する方法の2つがある

○ビューコントローラは、ビューを実際のデバイスに結びつける役割がある

○タブバーのアイテムを多数追加したときの「その他」ボタンなど、iPhone側が自動でやってくれる処理も多数ある

○タブバーのアイコンをカスタマイズ可能にする場合も

customizableViewControllers = YES;

 のように設定するだけで、後はiPhone側が自動で処理してくれる

メディアの項目

iPhoneではいくつかのオーディオ再生法がある

  • Celestial ⇒ 簡単で強力だが、SDK2.0から消滅。非公式。
  • System Sound Service⇒ 書籍には「System Audio」とあったが、誤植と思われる(正誤表発見できず)
  • Audio Queue ⇒ 低レベルな処理が可能
  • AVAudioPlayer
  • OpenAL
  • AudioUnit

各Audioの特徴は、http://blog.popino.net/article/29376546.htmlにまとめあり。
詳細に音のデータをいじるなどするなら、Audio Queue、鳴らすだけならAVAudioPlayerか。

 書籍「iPhone デベロッパーズクックブック」のP.239に、Audio Queueに関して、
 「Appleが提供しているプログラミングサンプルは複雑で、少しバグがあります。」との情報あり。

iPhoneのサウンドに関する情報を収集してみた

System Sound Service

  • Audio Toolboxに含まれる
  • 30秒以下のシステム警告音を鳴らすのに使われる
  • 扱いは非常に容易
     (AudioServicesCreateSystemSoundIDでIDを作成し、AudioServicesPlayAlertSoundで鳴らせる)
  • 実機でならないときは、マナーモードになっていないかをチェックせよ

Audio Queue Service

  • Audio Toolboxに含まれる
  • Windows用の原始的なサウンドAPIに似ている
  • 音切れしないために複数のバッファが必要
     (ただし、バッファを増やしすぎるとレイテンシが大きくなる)
  • 再生データを任意に変更する事ができる
  • 好きな箇所でループを再生を行う、自分で波形を作成して鳴らすなどの用途
  • 機能が高い反面、取り扱い方は複雑

OpenAL

  • もともとゲームのために用意されたAPIなので、自由度の高い再生
  • OpenGLとの相性もいいので、画面の表示と同期させたいときには適切
  • パフォーマンスの点でも有利な事が多い

注意点

 iPhoneは様々なオーディオフォーマットに対応しているが、
 ハードウェアの制限としてMP3とAACは、一度に一つのファイルしか再生する事ができない
 複数オーディオ再生が必要な場合は、AIFFやWAVといったフォーマットで音源を用意する。