当 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/