mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 14:20:20 +00:00
Various improvements
This commit is contained in:
@@ -361,6 +361,11 @@ open class NavigationController: UINavigationController, ContainableController,
|
||||
private func updateContainers(layout rawLayout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
|
||||
self.isUpdatingContainers = true
|
||||
|
||||
if let badgeNode = self.badgeNode, let image = badgeNode.image {
|
||||
badgeNode.isHidden = !rawLayout.deviceMetrics.hasTopNotch || rawLayout.size.width > rawLayout.size.height
|
||||
badgeNode.frame = CGRect(origin: CGPoint(x: floorToScreenPixels((rawLayout.size.width - image.size.width) / 2.0), y: 6.0), size: image.size)
|
||||
}
|
||||
|
||||
var layout = rawLayout
|
||||
|
||||
if self.ignoreInputHeight {
|
||||
@@ -631,6 +636,7 @@ open class NavigationController: UINavigationController, ContainableController,
|
||||
var topVisibleModalContainerWithStatusBar: NavigationModalContainer?
|
||||
var visibleModalCount = 0
|
||||
var topModalIsFlat = false
|
||||
var topFlatModalHasProgress = false
|
||||
let isLandscape = layout.orientation == .landscape
|
||||
var hasVisibleStandaloneModal = false
|
||||
var topModalDismissProgress: CGFloat = 0.0
|
||||
@@ -659,6 +665,17 @@ open class NavigationController: UINavigationController, ContainableController,
|
||||
effectiveModalTransition = 1.0
|
||||
}
|
||||
|
||||
if navigationLayout.modal[i].isFlat, let lastController = navigationLayout.modal[i].controllers.last {
|
||||
lastController.modalStyleOverlayTransitionFactorUpdated = { [weak self] transition in
|
||||
guard let strongSelf = self else {
|
||||
return
|
||||
}
|
||||
strongSelf.updateContainersNonReentrant(transition: transition)
|
||||
}
|
||||
modalStyleOverlayTransitionFactor = max(modalStyleOverlayTransitionFactor, lastController.modalStyleOverlayTransitionFactor)
|
||||
topFlatModalHasProgress = modalStyleOverlayTransitionFactor > 0.0
|
||||
}
|
||||
|
||||
containerTransition.updateFrame(node: modalContainer, frame: CGRect(origin: CGPoint(), size: layout.size))
|
||||
modalContainer.update(layout: modalContainer.isFlat ? overlayLayout : layout, controllers: navigationLayout.modal[i].controllers, coveredByModalTransition: effectiveModalTransition, transition: containerTransition)
|
||||
|
||||
@@ -862,9 +879,15 @@ open class NavigationController: UINavigationController, ContainableController,
|
||||
let visibleRootModalDismissProgress: CGFloat
|
||||
var additionalModalFrameProgress: CGFloat
|
||||
if visibleModalCount == 1 {
|
||||
effectiveRootModalDismissProgress = (topModalIsFlat || isLandscape) ? 1.0 : topModalDismissProgress
|
||||
visibleRootModalDismissProgress = effectiveRootModalDismissProgress
|
||||
additionalModalFrameProgress = 0.0
|
||||
if topFlatModalHasProgress {
|
||||
effectiveRootModalDismissProgress = 0.0
|
||||
visibleRootModalDismissProgress = effectiveRootModalDismissProgress
|
||||
additionalModalFrameProgress = 1.0 - topModalDismissProgress
|
||||
} else {
|
||||
effectiveRootModalDismissProgress = ((topModalIsFlat && !topFlatModalHasProgress) || isLandscape) ? 1.0 : topModalDismissProgress
|
||||
visibleRootModalDismissProgress = effectiveRootModalDismissProgress
|
||||
additionalModalFrameProgress = 0.0
|
||||
}
|
||||
} else if visibleModalCount >= 2 {
|
||||
effectiveRootModalDismissProgress = 0.0
|
||||
visibleRootModalDismissProgress = topModalDismissProgress
|
||||
@@ -929,7 +952,7 @@ open class NavigationController: UINavigationController, ContainableController,
|
||||
}
|
||||
let maxScale: CGFloat
|
||||
let maxOffset: CGFloat
|
||||
if topModalIsFlat || isLandscape {
|
||||
if (topModalIsFlat && !topFlatModalHasProgress) || isLandscape {
|
||||
maxScale = 1.0
|
||||
maxOffset = 0.0
|
||||
} else if visibleModalCount <= 1 {
|
||||
@@ -1219,8 +1242,16 @@ open class NavigationController: UINavigationController, ContainableController,
|
||||
self.displayNode.addSubnode(inCallStatusBar)
|
||||
}
|
||||
}
|
||||
|
||||
let badgeNode = ASImageNode()
|
||||
badgeNode.displaysAsynchronously = false
|
||||
badgeNode.image = UIImage(bundleImageName: "Components/BadgeTest")
|
||||
self.badgeNode = badgeNode
|
||||
self.displayNode.addSubnode(badgeNode)
|
||||
}
|
||||
|
||||
private var badgeNode: ASImageNode?
|
||||
|
||||
public func pushViewController(_ controller: ViewController) {
|
||||
self.pushViewController(controller, completion: {})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user