mirror of
https://github.com/divkit/divkit.git
synced 2026-06-06 20:07:59 +00:00
fb117357b4
Support RiveRuntime
53 lines
1.2 KiB
Swift
53 lines
1.2 KiB
Swift
import UIKit
|
|
|
|
import CommonCore
|
|
import LayoutKit
|
|
|
|
final class AnimationBlockView: BlockView {
|
|
var animatableView: AnimatableView? {
|
|
didSet {
|
|
if let animatablView = animatableView {
|
|
oldValue?.removeFromSuperview()
|
|
addSubview(animatablView)
|
|
}
|
|
}
|
|
}
|
|
|
|
private var animationRequest: Cancellable?
|
|
var animationHolder: AnimationHolder? {
|
|
didSet {
|
|
animationRequest?.cancel()
|
|
|
|
let newValue = animationHolder
|
|
animationRequest = animationHolder?.requestAnimationWithCompletion { [weak self] animationSource in
|
|
guard let self = self,
|
|
newValue === self.animationHolder,
|
|
let animationSource = animationSource else {
|
|
return
|
|
}
|
|
|
|
self.animatableView?.setSource(animationSource)
|
|
self.animatableView?.play()
|
|
}
|
|
}
|
|
}
|
|
|
|
init() {
|
|
super.init(frame: .zero)
|
|
}
|
|
|
|
override func layoutSubviews() {
|
|
super.layoutSubviews()
|
|
animatableView?.frame = bounds
|
|
}
|
|
|
|
@available(*, unavailable)
|
|
required init?(coder _: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
let effectiveBackgroundColor: UIColor? = nil
|
|
}
|
|
|
|
extension AnimationBlockView: VisibleBoundsTrackingLeaf { }
|