1
我有一個CALayer
它有一個CAKeyFrameAnimation
。iOS - 檢測CALayer內容的變化
有沒有辦法檢測到CALayer
的內容變化?
這就像,每當CALayer
的內容(圖像)由於CAKeyFrameAnimation
而改變時,我想播放一個短的聲音與AVAudioPlayer
。
UPDATE
我做這樣的解決它。
- (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
無效。
謝謝你快回答!我會給它一個! – Woonohyo