diff --git a/submodules/ContactListUI/Sources/ContactListNode.swift b/submodules/ContactListUI/Sources/ContactListNode.swift index 6744d7c070..3336e06ff1 100644 --- a/submodules/ContactListUI/Sources/ContactListNode.swift +++ b/submodules/ContactListUI/Sources/ContactListNode.swift @@ -1325,8 +1325,7 @@ public final class ContactListNode: ASDisplayNode { headerInsets.top -= navigationBarSearchContentHeight } - self.listNode.bounds = CGRect(x: 0.0, y: 0.0, width: layout.size.width, height: layout.size.height) - self.listNode.position = CGPoint(x: layout.size.width / 2.0, y: layout.size.height / 2.0) + transition.updateFrame(node: self.listNode, frame: CGRect(x: 0.0, y: 0.0, width: layout.size.width, height: layout.size.height)) let (duration, curve) = listViewAnimationDurationAndCurve(transition: transition) let updateSizeAndInsets = ListViewUpdateSizeAndInsets(size: layout.size, insets: insets, headerInsets: headerInsets, duration: duration, curve: curve) diff --git a/submodules/Display/Display/Navigation/NavigationModalContainer.swift b/submodules/Display/Display/Navigation/NavigationModalContainer.swift index 29703b4222..65c7d2233c 100644 --- a/submodules/Display/Display/Navigation/NavigationModalContainer.swift +++ b/submodules/Display/Display/Navigation/NavigationModalContainer.swift @@ -87,6 +87,7 @@ final class NavigationModalContainer: ASDisplayNode, UIScrollViewDelegate, UIGes self.scrollNode.view.contentInsetAdjustmentBehavior = .never } self.scrollNode.view.delaysContentTouches = false + self.scrollNode.view.clipsToBounds = false self.scrollNode.view.delegate = self let panRecognizer = InteractiveTransitionGestureRecognizer(target: self, action: #selector(self.panGesture(_:)), canBegin: { [weak self] in @@ -299,13 +300,18 @@ final class NavigationModalContainer: ASDisplayNode, UIScrollViewDelegate, UIGes transition.updateFrame(node: self.dim, frame: CGRect(origin: CGPoint(), size: layout.size)) self.ignoreScrolling = true self.scrollNode.view.isScrollEnabled = (layout.inputHeight == nil || layout.inputHeight == 0.0) && self.isInteractiveDimissEnabled - transition.updateFrame(node: self.scrollNode, frame: CGRect(origin: CGPoint(x: self.horizontalDismissOffset ?? 0.0, y: 0.0), size: layout.size)) + let previousBounds = self.scrollNode.bounds + let scrollNodeFrame = CGRect(origin: CGPoint(x: self.horizontalDismissOffset ?? 0.0, y: 0.0), size: layout.size) + self.scrollNode.frame = scrollNodeFrame self.scrollNode.view.contentSize = CGSize(width: layout.size.width, height: layout.size.height * 2.0) if !self.scrollNode.view.isDecelerating && !self.scrollNode.view.isDragging { let defaultBounds = CGRect(origin: CGPoint(x: 0.0, y: layout.size.height), size: layout.size) if self.scrollNode.bounds != defaultBounds { self.scrollNode.bounds = defaultBounds } + if previousBounds.minY != defaultBounds.minY { + transition.animateOffsetAdditive(node: self.scrollNode, offset: previousBounds.minY - defaultBounds.minY) + } } self.ignoreScrolling = false