mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
Improve media pinch-to-zoom in Instant View
This commit is contained in:
@@ -20,6 +20,8 @@ final class InstantPageContentNode : ASDisplayNode {
|
||||
private let longPressMedia: (InstantPageMedia) -> Void
|
||||
private let openPeer: (EnginePeer) -> Void
|
||||
private let openUrl: (InstantPageUrlItem) -> Void
|
||||
private let activatePinchPreview: ((PinchSourceContainerNode) -> Void)?
|
||||
private let pinchPreviewFinished: ((InstantPageNode) -> Void)?
|
||||
|
||||
var currentLayoutTiles: [InstantPageTile] = []
|
||||
var currentLayoutItemsWithNodes: [InstantPageItem] = []
|
||||
@@ -40,7 +42,7 @@ final class InstantPageContentNode : ASDisplayNode {
|
||||
|
||||
private var previousVisibleBounds: CGRect?
|
||||
|
||||
init(context: AccountContext, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, sourceLocation: InstantPageSourceLocation, theme: InstantPageTheme, items: [InstantPageItem], contentSize: CGSize, inOverlayPanel: Bool = false, openMedia: @escaping (InstantPageMedia) -> Void, longPressMedia: @escaping (InstantPageMedia) -> Void, openPeer: @escaping (EnginePeer) -> Void, openUrl: @escaping (InstantPageUrlItem) -> Void) {
|
||||
init(context: AccountContext, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, sourceLocation: InstantPageSourceLocation, theme: InstantPageTheme, items: [InstantPageItem], contentSize: CGSize, inOverlayPanel: Bool = false, openMedia: @escaping (InstantPageMedia) -> Void, longPressMedia: @escaping (InstantPageMedia) -> Void, activatePinchPreview: ((PinchSourceContainerNode) -> Void)?, pinchPreviewFinished: ((InstantPageNode) -> Void)?, openPeer: @escaping (EnginePeer) -> Void, openUrl: @escaping (InstantPageUrlItem) -> Void) {
|
||||
self.context = context
|
||||
self.strings = strings
|
||||
self.nameDisplayOrder = nameDisplayOrder
|
||||
@@ -49,6 +51,8 @@ final class InstantPageContentNode : ASDisplayNode {
|
||||
|
||||
self.openMedia = openMedia
|
||||
self.longPressMedia = longPressMedia
|
||||
self.activatePinchPreview = activatePinchPreview
|
||||
self.pinchPreviewFinished = pinchPreviewFinished
|
||||
self.openPeer = openPeer
|
||||
self.openUrl = openUrl
|
||||
|
||||
@@ -190,19 +194,23 @@ final class InstantPageContentNode : ASDisplayNode {
|
||||
let detailsIndex = detailsIndex
|
||||
if let newNode = item.node(context: self.context, strings: self.strings, nameDisplayOrder: self.nameDisplayOrder, theme: theme, sourceLocation: self.sourceLocation, openMedia: { [weak self] media in
|
||||
self?.openMedia(media)
|
||||
}, longPressMedia: { [weak self] media in
|
||||
self?.longPressMedia(media)
|
||||
},
|
||||
activatePinchPreview: nil,
|
||||
pinchPreviewFinished: nil,
|
||||
openPeer: { [weak self] peerId in
|
||||
self?.openPeer(peerId)
|
||||
}, openUrl: { [weak self] url in
|
||||
self?.openUrl(url)
|
||||
}, updateWebEmbedHeight: { _ in
|
||||
}, updateDetailsExpanded: { [weak self] expanded in
|
||||
self?.updateDetailsExpanded(detailsIndex, expanded)
|
||||
}, currentExpandedDetails: self.currentExpandedDetails) {
|
||||
}, longPressMedia: { [weak self] media in
|
||||
self?.longPressMedia(media)
|
||||
},
|
||||
activatePinchPreview: { [weak self] node in
|
||||
self?.activatePinchPreview?(node)
|
||||
},
|
||||
pinchPreviewFinished: { [weak self] node in
|
||||
self?.pinchPreviewFinished?(node)
|
||||
},
|
||||
openPeer: { [weak self] peerId in
|
||||
self?.openPeer(peerId)
|
||||
}, openUrl: { [weak self] url in
|
||||
self?.openUrl(url)
|
||||
}, updateWebEmbedHeight: { _ in
|
||||
}, updateDetailsExpanded: { [weak self] expanded in
|
||||
self?.updateDetailsExpanded(detailsIndex, expanded)
|
||||
}, currentExpandedDetails: self.currentExpandedDetails) {
|
||||
newNode.frame = itemFrame
|
||||
newNode.updateLayout(size: itemFrame.size, transition: transition)
|
||||
if let topNode = topNode {
|
||||
|
||||
Reference in New Issue
Block a user