禁用CALayer隐式动画

时间:2014-09-14 04:24:46

标签: 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.noImplicitAnimations()后立即使用myLayer。然而,隐含的动画仍在发生。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

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