2017-01-23 1 views
1

Я работаю над компонентом пользовательского интерфейса, который реализует анимацию флип-карт. Все работает нормально, но когда я изменяю содержимое верхнего CALayer на новое изображение, старое изображение остается видимым перед изменением. Это создает путаницу. Для лучшего объяснения я помещаю GIF анимацию, приведенную ниже:Изменение содержимого CALayer до завершения анимации

enter image description here

Это код с изменив содержание CALayer:

firstTopLayer.contents = secondTopLayer.contents 
let bottomAnim = CABasicAnimation(keyPath: "transform") 
bottomAnim.duration = animDuration/2 
bottomAnim.repeatCount = 1 
bottomAnim.fromValue = NSValue.init(caTransform3D: 
CATransform3DMakeRotation((CGFloat)(M_PI_2), 1, 0, 0)) 
bottomAnim.toValue = NSValue.init(caTransform3D: 
CATransform3DMakeRotation(0, 1, 0, 0)) 
bottomAnim.isRemovedOnCompletion = true 
bottomAnim.timingFunction = CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseIn) 
firstBottomLayer.add(bottomAnim, forKey: "bottom") 
firstBottomLayer.contents = self.bufferContents 

Для получения дополнительной информации, которую я разместить ссылку на repository

ответ

1

I нашел решение. Верхняя анимация должна иметь такую ​​конфигурацию

topAnim.fillMode = kCAFillModeForwards 
topAnim.isRemovedOnCompletion = false 

и после каждого запуска этой анимации.

firstTopLayer.removeAnimation(forKey: kTopAnimaton) 

В этой конфигурации верхний слой остается в нем последний кадр анимации позиции

Смежные вопросы