之前我的代码很好,但它提示我:
cannot find protocol declaration for 'CAAnimationDelegate';did you mean 'UIApplicationDelegate'?
今天我跑的时候。
我尝试过导入QuartzCore/CAAnimation.h
,但无效。
答案 0 :(得分:20)
CAAnimationDelegate是iOS 10 SDK中添加的新协议。这意味着如果你用Xcode 8构建它就在那里,但如果用Xcode 7构建它就不存在。
使用Xcode 8构建时,您会收到警告:
Assigning to 'id<CAAnimationDelegate> _Nullable' from incompatible type 'WhateverUIViewController *const __strong'
如果添加CAAnimationDelegate,您的代码将不再构建在Xcode 7中。如果你需要使用两个Xcode进行构建,则需要使用ifdefs:
#if __IPHONE_OS_VERSION_MAX_ALLOWED < 100000
// CAAnimationDelegate is not available before iOS 10 SDK
@interface WhateverUIViewController ()
#else
@interface WhateverUIViewController () <CAAnimationDelegate>
#endif
答案 1 :(得分:4)
CAAnimationDelegate 不是协议。没有必要告诉您的班级将实施 CAAnimationDelegate 。
首先,您需要导入 QuartzCore / QuartzCore.h 。然后,您只需将您的类(您要在其中实现动画委托方法)对象作为委托给 CAAnimation < / strong>对象。它会在启动动画时自动调用 animationDidStart ,并在完成动画时调用 animationDidStop 方法。