mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Various fixes
This commit is contained in:
parent
724a303c9c
commit
8d9068d87d
@ -2311,7 +2311,7 @@ final class PeerInfoHeaderNode: ASDisplayNode {
|
|||||||
var emojiStatusPackDisposable = MetaDisposable()
|
var emojiStatusPackDisposable = MetaDisposable()
|
||||||
var emojiStatusFileAndPackTitle = Promise<(TelegramMediaFile, LoadedStickerPack)?>()
|
var emojiStatusFileAndPackTitle = Promise<(TelegramMediaFile, LoadedStickerPack)?>()
|
||||||
|
|
||||||
private var validWidth: CGFloat?
|
private var validLayout: (width: CGFloat, deviceMetrics: DeviceMetrics)?
|
||||||
|
|
||||||
init(context: AccountContext, avatarInitiallyExpanded: Bool, isOpenedFromChat: Bool, isMediaOnly: Bool, isSettings: Bool, forumTopicThreadId: Int64?, chatLocation: ChatLocation) {
|
init(context: AccountContext, avatarInitiallyExpanded: Bool, isOpenedFromChat: Bool, isMediaOnly: Bool, isSettings: Bool, forumTopicThreadId: Int64?, chatLocation: ChatLocation) {
|
||||||
self.context = context
|
self.context = context
|
||||||
@ -2577,7 +2577,9 @@ final class PeerInfoHeaderNode: ASDisplayNode {
|
|||||||
self.peer = peer
|
self.peer = peer
|
||||||
self.threadData = threadData
|
self.threadData = threadData
|
||||||
self.avatarListNode.listContainerNode.peer = peer
|
self.avatarListNode.listContainerNode.peer = peer
|
||||||
self.validWidth = width
|
|
||||||
|
let isFirstTime = self.validLayout == nil
|
||||||
|
self.validLayout = (width, deviceMetrics)
|
||||||
|
|
||||||
let previousPanelStatusData = self.currentPanelStatusData
|
let previousPanelStatusData = self.currentPanelStatusData
|
||||||
self.currentPanelStatusData = panelStatusData.0
|
self.currentPanelStatusData = panelStatusData.0
|
||||||
@ -3628,6 +3630,10 @@ final class PeerInfoHeaderNode: ASDisplayNode {
|
|||||||
transition.updateFrame(node: self.separatorNode, frame: separatorFrame)
|
transition.updateFrame(node: self.separatorNode, frame: separatorFrame)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if isFirstTime {
|
||||||
|
self.updateAvatarMask(transition: .immediate)
|
||||||
|
}
|
||||||
|
|
||||||
return resolvedHeight
|
return resolvedHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3690,17 +3696,22 @@ final class PeerInfoHeaderNode: ASDisplayNode {
|
|||||||
self.avatarListNode.animateAvatarCollapse(transition: transition)
|
self.avatarListNode.animateAvatarCollapse(transition: transition)
|
||||||
}
|
}
|
||||||
|
|
||||||
if let width = self.validWidth {
|
self.updateAvatarMask(transition: transition)
|
||||||
let maskScale: CGFloat = isAvatarExpanded ? width / 100.0 : 1.0
|
|
||||||
transition.updateTransformScale(layer: self.avatarListNode.maskNode.layer, scale: maskScale)
|
|
||||||
transition.updateTransformScale(layer: self.avatarListNode.bottomCoverNode.layer, scale: maskScale)
|
|
||||||
transition.updateTransformScale(layer: self.avatarListNode.topCoverNode.layer, scale: maskScale)
|
|
||||||
|
|
||||||
let maskAnchorPoint = CGPoint(x: 0.5, y: isAvatarExpanded ? 0.37 : 0.5)
|
|
||||||
transition.updateAnchorPoint(layer: self.avatarListNode.maskNode.layer, anchorPoint: maskAnchorPoint)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func updateAvatarMask(transition: ContainedViewLayoutTransition) {
|
||||||
|
guard let (width, deviceMetrics) = self.validLayout, deviceMetrics.hasDynamicIsland else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let maskScale: CGFloat = isAvatarExpanded ? width / 100.0 : 1.0
|
||||||
|
transition.updateTransformScale(layer: self.avatarListNode.maskNode.layer, scale: maskScale)
|
||||||
|
transition.updateTransformScale(layer: self.avatarListNode.bottomCoverNode.layer, scale: maskScale)
|
||||||
|
transition.updateTransformScale(layer: self.avatarListNode.topCoverNode.layer, scale: maskScale)
|
||||||
|
|
||||||
|
let maskAnchorPoint = CGPoint(x: 0.5, y: isAvatarExpanded ? 0.37 : 0.5)
|
||||||
|
transition.updateAnchorPoint(layer: self.avatarListNode.maskNode.layer, anchorPoint: maskAnchorPoint)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class DynamicIslandMaskNode: ASDisplayNode {
|
private class DynamicIslandMaskNode: ASDisplayNode {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user