mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Fix theme crossfade animation
This commit is contained in:
parent
03ae2197ac
commit
56191f4c0b
@ -711,11 +711,10 @@ class ThemeCarouselThemeItemNode: ListViewItemNode, ItemListItemNode {
|
||||
strongSelf.item = item
|
||||
strongSelf.layoutParams = params
|
||||
|
||||
strongSelf.listNode.backgroundColor = item.theme.list.itemBlocksBackgroundColor
|
||||
strongSelf.backgroundNode.backgroundColor = item.theme.list.itemBlocksBackgroundColor
|
||||
strongSelf.topStripeNode.backgroundColor = item.theme.list.itemBlocksSeparatorColor
|
||||
strongSelf.bottomStripeNode.backgroundColor = item.theme.list.itemBlocksSeparatorColor
|
||||
|
||||
|
||||
if strongSelf.backgroundNode.supernode == nil {
|
||||
strongSelf.containerNode.insertSubnode(strongSelf.backgroundNode, at: 0)
|
||||
}
|
||||
@ -828,10 +827,11 @@ class ThemeCarouselThemeItemNode: ListViewItemNode, ItemListItemNode {
|
||||
self.snapshotView = snapshotView
|
||||
}
|
||||
|
||||
self.listNode.forEachVisibleItemNode { node in
|
||||
self.listNode.enumerateItemNodes { node in
|
||||
if let node = node as? ThemeCarouselThemeItemIconNode {
|
||||
node.prepareCrossfadeTransition()
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
@ -839,22 +839,23 @@ class ThemeCarouselThemeItemNode: ListViewItemNode, ItemListItemNode {
|
||||
guard self.snapshotView?.layer.animationKeys()?.isEmpty ?? true else {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
var views: [UIView] = []
|
||||
if let snapshotView = self.snapshotView {
|
||||
views.append(snapshotView)
|
||||
self.snapshotView = nil
|
||||
}
|
||||
|
||||
self.listNode.forEachVisibleItemNode { node in
|
||||
|
||||
self.listNode.enumerateItemNodes { node in
|
||||
if let node = node as? ThemeCarouselThemeItemIconNode {
|
||||
if let snapshotView = node.snapshotView {
|
||||
views.append(snapshotView)
|
||||
node.snapshotView = nil
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
UIView.animate(withDuration: 0.3, animations: {
|
||||
for view in views {
|
||||
view.alpha = 0.0
|
||||
|
@ -1292,9 +1292,7 @@ public final class ThemeSettingsCrossfadeController: ViewController {
|
||||
|
||||
public init(view: UIView? = nil, topOffset: CGFloat? = nil, bottomOffset: CGFloat? = nil, leftOffset: CGFloat? = nil, sideInset: CGFloat = 0.0) {
|
||||
if let view = view {
|
||||
if var leftOffset = leftOffset {
|
||||
leftOffset += UIScreenPixel
|
||||
|
||||
if let leftOffset = leftOffset {
|
||||
if let view = view.snapshotView(afterScreenUpdates: false) {
|
||||
let clipView = UIView()
|
||||
clipView.clipsToBounds = true
|
||||
@ -1306,13 +1304,13 @@ public final class ThemeSettingsCrossfadeController: ViewController {
|
||||
if let topOffset = topOffset, let bottomOffset = bottomOffset {
|
||||
var frame = view.frame
|
||||
frame.origin.y = topOffset
|
||||
frame.size.width = leftOffset
|
||||
frame.size.width = leftOffset + sideInset
|
||||
frame.size.height = bottomOffset - topOffset
|
||||
clipView.frame = frame
|
||||
|
||||
frame = view.frame
|
||||
frame.origin.y = -topOffset
|
||||
frame.size.width = leftOffset
|
||||
frame.size.width = leftOffset + sideInset
|
||||
frame.size.height = bottomOffset
|
||||
view.frame = frame
|
||||
}
|
||||
@ -1322,7 +1320,7 @@ public final class ThemeSettingsCrossfadeController: ViewController {
|
||||
}
|
||||
|
||||
if sideInset > 0.0 {
|
||||
if let view = view.snapshotView(afterScreenUpdates: false) {
|
||||
if let view = view.snapshotView(afterScreenUpdates: false), leftOffset == nil {
|
||||
let clipView = UIView()
|
||||
clipView.clipsToBounds = true
|
||||
clipView.addSubview(view)
|
||||
|
@ -154,6 +154,7 @@ private final class EffectImageLayer: SimpleLayer, GradientBackgroundPatternOver
|
||||
}
|
||||
|
||||
private var isUsingSoftlight: Bool = false
|
||||
private var useFilter: Bool = false
|
||||
|
||||
var suspendCompositionUpdates: Bool = false
|
||||
private var needsCompositionUpdate: Bool = false
|
||||
@ -172,10 +173,11 @@ private final class EffectImageLayer: SimpleLayer, GradientBackgroundPatternOver
|
||||
useSoftlight = true
|
||||
useFilter = false
|
||||
}
|
||||
if self.isUsingSoftlight != useSoftlight {
|
||||
if self.isUsingSoftlight != useSoftlight || self.useFilter != useFilter {
|
||||
self.isUsingSoftlight = useSoftlight
|
||||
self.useFilter = useFilter
|
||||
|
||||
if self.isUsingSoftlight && useFilter {
|
||||
if self.isUsingSoftlight && self.useFilter {
|
||||
self.compositingFilter = "softLightBlendMode"
|
||||
} else {
|
||||
self.compositingFilter = nil
|
||||
@ -842,10 +844,6 @@ final class WallpaperBackgroundNodeImpl: ASDisplayNode, WallpaperBackgroundNode
|
||||
}
|
||||
private static var cachedSharedPattern: (PatternKey, UIImage)?
|
||||
|
||||
//private var inlineAnimationNodes: [(AnimatedStickerNode, CGPoint)] = []
|
||||
//private let hierarchyTrackingLayer = HierarchyTrackingLayer()
|
||||
//private var activateInlineAnimationTimer: SwiftSignalKit.Timer?
|
||||
|
||||
private let _isReady = ValuePromise<Bool>(false, ignoreRepeated: true)
|
||||
var isReady: Signal<Bool, NoError> {
|
||||
return self._isReady.get()
|
||||
@ -1308,13 +1306,6 @@ final class WallpaperBackgroundNodeImpl: ASDisplayNode, WallpaperBackgroundNode
|
||||
}
|
||||
|
||||
self.loadPatternForSizeIfNeeded(size: size, displayMode: displayMode, transition: transition)
|
||||
|
||||
/*for (animationNode, relativePosition) in self.inlineAnimationNodes {
|
||||
let sizeNorm = CGSize(width: 1440, height: 2960)
|
||||
let animationSize = CGSize(width: 512.0 / sizeNorm.width * size.width, height: 512.0 / sizeNorm.height * size.height)
|
||||
animationNode.frame = CGRect(origin: CGPoint(x: relativePosition.x / sizeNorm.width * size.width, y: relativePosition.y / sizeNorm.height * size.height), size: animationSize)
|
||||
animationNode.updateLayout(size: animationNode.frame.size)
|
||||
}*/
|
||||
|
||||
if isFirstLayout && !self.frame.isEmpty {
|
||||
self.updateScale()
|
||||
|
Loading…
x
Reference in New Issue
Block a user