0
我正在應用CAAnimation
在屏幕上和屏幕上移動工具欄。CAAnimation持續時間不適用
當我觸摸上海華,觸發該下面的方法:
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[UIView beginAnimations:kViewerToggleToolbarAnimation context:nil];
if (self.viewerToolbarView.isVisible) {
self.viewerToolbarView.frame = CGRectMake(0, self.frame.size.height, self.viewerToolbarView.frame.size.width, self.viewerToolbarView.frame.size.height);
self.viewerToolbarView.isVisible = NO;
}
else {
self.viewerToolbarView.frame = CGRectMake(0, self.frame.size.height - kUIToolbarHeight, self.viewerToolbarView.frame.size.width, self.viewerToolbarView.frame.size.height);
self.viewerToolbarView.isVisible = YES;
}
[UIView commitAnimations];
}
這反過來觸發子視圖的委託方法:
- (id<CAAction>) actionForLayer:(CALayer *)layer forKey:(NSString *)key {
id<CAAction> animation = nil;
if ([key isEqualToString:kViewerToggleToolbarAnimation]) {
animation = [CABasicAnimation animation];
if (self.isVisible)
((CABasicAnimation*)animation).duration = kViewerToolbarHideAnimationDuration;
else
((CABasicAnimation*)animation).duration = kViewerToolbarShowAnimationDuration;
((CABasicAnimation*)animation).timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];
}
else {
animation = [super actionForLayer:layer forKey:key];
}
return animation;
}
kViewerToggleToolbarAnimation
,kViewerToolbarHideAnimationDuration
和kViewerToolbarShowAnimationDuration
在別處定義爲常數:
extern NSString * const kViewerToggleToolbarAnimation;
extern CGFloat const kViewerToolbarShowAnimationDuration;
extern CGFloat const kViewerToolbarHideAnimationDuration;
...
NSString * const kViewerToggleToolbarAnimation = @"kViewerToggleToolbarAnimation";
CGFloat const kViewerToolbarShowAnimationDuration = 2.50f;
CGFloat const kViewerToolbarHideAnimationDuration = 2.75f;
問題是我可以在常量文件中增加這些持續時間值,但委託方法會忽略這些持續時間並應用其自身的顯着短持續時間(粗略爲0.5秒)。
2.5和2.75秒是非常明顯的長時間,否則動畫會運行,如果它正常工作。
我在做什麼錯誤的動作,導致這些持續時間常量被忽略?否則它會編譯並運行良好,所以它不會抱怨無法找到常量。