ios - 禁用 CALayer 隐式动画

标签 ios objective-c swift core-animation calayer

CALayer 的属性发生变化时,下面的类试图阻止任何隐式动画的发生。

// NoImplicitAnimations.h

#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>

@interface NoImplicitAnimations : NSObject

- (id<CAAction>) actionForLayer:(CALayer *)layer forKey:(NSString *)key;

@end



// NoImplicitAnimations.m

#import "NoImplicitAnimations.h"

@implementation NoImplicitAnimations

- (id<CAAction>) actionForLayer:(CALayer *)layer forKey:(NSString *)key {
  return (id)[NSNull null];
}

@end

我在我的 Objective-C 中将 NoImplicitAnimations.h 导入到 Swift 桥接头文件中。

我创建了一个全局常量 let _noImplicitAnimations = NoImplicitAnimations()

我像这样扩展 CALayer 类:

extension CALayer {
  func noImplicitAnimations () {
    delegate = _noImplicitAnimations
  }
}

问题来了。我在创建 myLayer 后立即使用 myLayer.noImplicitAnimations()。然而,隐式动画仍在发生。

我在这里做错了什么?

最佳答案

没关系。这确实有效。我在错误的 CALayer 上测试它。我的错!

关于ios - 禁用 CALayer 隐式动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25830050/

相关文章:

ios - 如何在不移动图像的情况下将文本放置在图像下方?

ios - MFMailComposerViewController 不发送电子邮件

ios - 在 Objective-C 中检查数据库中空字符串的正确方法是什么

swift - 有没有办法只为一个集合启用离线持久性,而不是其他集合?

swift - 枚举作为字典的键

ios - 在没有 cocoapods 的情况下安装 'JSONWebToken' 库

ios - 将控制命令发送到 UIWebView 以进行在线游戏 - Swift

ios - 第三方开发人员在企业内发布的iOS应用

iphone - 仪器内存泄漏与 ARC 混淆

iOS - 在实现范围之外编写回调