AIFF形式/16 bit/44.1khz なファイルが48個提供されている。
カテゴリは3つ。
・beeps ブザーっぽいものからピアノ、オルガンなど
・slides 「シュッ」とか。スライドした時などに使える。
・taps ボタンタップ時の音など
どれもUIでの利用に特化していて非常に短い。
面白いのはちょっとしたライブラリ(クラス1個)が用意されていて、これを利用すると簡単にボタンにサウンドを紐付けられる。
#import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> @interface UIButton (Sound) -(void) addSoundTitled: (NSString*) soundfilename forUIControlEvent: (UIControlEvents) controlEvents; @property (nonatomic, strong) AVAudioPlayer* tapSound; @property (nonatomic, strong) AVAudioPlayer* releaseSound;
こんな感じで使える。
[myButton addSoundTitled:@"mySound.aif" forControlEvents: UIControlEventsTouchUpInside]
脱線するがこのコードではカテゴリでプロパティを定義している。通常だとカテゴリはメンバ変数を追加できないのだが、 objc_setAssociatedObject/objc_getAssociatedObject を使うとインスタンスに任意のオブジェクトを保持しておけてそれを使っている。
-(void) setTapSound:(AVAudioPlayer *)tapSound { objc_setAssociatedObject(self, kTapSoundKey, tapSound, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } -(AVAudioPlayer*) tapSound { return objc_getAssociatedObject(self, kTapSoundKey); }
- - - -
これはいい。使わせてもらおう。
0 件のコメント:
コメントを投稿