Отключение неявных анимаций CALayer - программирование

Отключение неявных анимаций 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

Я импортирую NoImplicitAnimations.h в мой заголовок Objective-C в Swift.

Я создаю глобальную константу let _noImplicitAnimations = NoImplicitAnimations().

Я расширяю класс CALayer следующим образом:

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

Теперь возникает проблема. Я использую myLayer.noImplicitAnimations() сразу после создания myLayer. Тем не менее, неявные анимации все еще происходят.

Что я здесь делаю неправильно?

4b9b3361

Ответ 1

Nevermind. Это действительно работает. Я тестировал его неправильно CALayer. Мой плохой!