找不到'CAAnimationDelegate'的协议声明

Kay*_*est 6 objective-c ios

我的代码以前很好,但它提示我:

cannot find protocol declaration for 'CAAnimationDelegate';did you mean 'UIApplicationDelegate'?
Run Code Online (Sandbox Code Playgroud)

我今天跑的时候.

我尝试过导入QuartzCore/CAAnimation.h但不起作用.

Jos*_*phH 20

CAAnimationDelegate是iOS 10 SDK中添加的新协议.这意味着如果你使用Xcode 8构建它就在那里,但如果你使用Xcode 7构建则不存在.

使用Xcode 8构建时,您会收到警告:

Assigning to 'id<CAAnimationDelegate> _Nullable' from incompatible type 'WhateverUIViewController *const __strong'
Run Code Online (Sandbox Code Playgroud)

如果添加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
Run Code Online (Sandbox Code Playgroud)


Bha*_*ivi 4

CAAnimationDelegate不是一个协议。无需告诉您的类将实现CAAnimationDelegate

首先,您需要导入QuartzCore/QuartzCore.h。然后,您只需将您的类(您想要在其中实现动画委托方法)对象作为委托传递给您的CAAnimation对象。它会在开始动画时自动调用animationDidStart方法,并在完成动画时自动调用animationDidStop方法。