Следующий класс пытается остановить любые неявные анимации, возникающие при изменении свойства 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
Я импортирую NoImplicitAnimations.h в мой заголовок Objective-C в Swift.
Я создаю глобальную константу let _noImplicitAnimations = NoImplicitAnimations().
Я расширяю класс CALayer следующим образом:
extension CALayer {
func noImplicitAnimations () {
delegate = _noImplicitAnimations
}
}
Теперь возникает проблема. Я использую myLayer.noImplicitAnimations() сразу после создания myLayer. Тем не менее, неявные анимации все еще происходят.