私は を持ってCALayer
いCAKeyFrameAnimation
ます。
の内容の変更を検出する方法はありCALayer
ますか?
CALayer
の内容(画像)がで変わるたびにCAKeyFrameAnimation
で短い音を鳴らしたいという感じAVAudioPlayer
です。
アップデート
こんな感じで解決しました。
- (void) viewDidLoad
{
// init CADisplayLink to catch the changing moment
CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(checkContents:)];
[displayLink setFrameInterval:6] // checking by every 0.1 sec (6 frames)
[displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
}
- (void) checkContents:(CADisplayLink *) sender;
{
// _newImage and _oldImage are class variables. (UIImage)
// animatingView is a `UIImageView` where its layer's contents is being changed by `CAKeyFrameAnimation`
CALayer *presentLayer = [animatingView.layer presentationLayer];
_newImage = presentLayer.contents;
if ( ![_newimage isEqual:_oldImage] )
{
NSLog(@"Image changed! From %@ to %@", _oldImage, _newImage);
}
_oldImage = _newImage;
}
CADisplayLink
もちろん、不要になったら無効にすることを忘れないでください。