Fix modal screens presentation in landscape

This commit is contained in:
Ilya Laktyushin
2020-07-28 19:15:57 +03:00
parent 26a4d282f4
commit b9e9208011
2 changed files with 6 additions and 4 deletions

View File

@@ -579,6 +579,7 @@ open class NavigationController: UINavigationController, ContainableController,
var previousModalContainer: NavigationModalContainer? var previousModalContainer: NavigationModalContainer?
var visibleModalCount = 0 var visibleModalCount = 0
var topModalIsFlat = false var topModalIsFlat = false
var isLandscape = layout.orientation == .landscape
var hasVisibleStandaloneModal = false var hasVisibleStandaloneModal = false
var topModalDismissProgress: CGFloat = 0.0 var topModalDismissProgress: CGFloat = 0.0
@@ -784,7 +785,7 @@ open class NavigationController: UINavigationController, ContainableController,
let visibleRootModalDismissProgress: CGFloat let visibleRootModalDismissProgress: CGFloat
var additionalModalFrameProgress: CGFloat var additionalModalFrameProgress: CGFloat
if visibleModalCount == 1 { if visibleModalCount == 1 {
effectiveRootModalDismissProgress = topModalIsFlat ? 1.0 : topModalDismissProgress effectiveRootModalDismissProgress = (topModalIsFlat || isLandscape) ? 1.0 : topModalDismissProgress
visibleRootModalDismissProgress = effectiveRootModalDismissProgress visibleRootModalDismissProgress = effectiveRootModalDismissProgress
additionalModalFrameProgress = 0.0 additionalModalFrameProgress = 0.0
} else if visibleModalCount >= 2 { } else if visibleModalCount >= 2 {
@@ -851,7 +852,7 @@ open class NavigationController: UINavigationController, ContainableController,
} }
let maxScale: CGFloat let maxScale: CGFloat
let maxOffset: CGFloat let maxOffset: CGFloat
if topModalIsFlat { if topModalIsFlat || isLandscape {
maxScale = 1.0 maxScale = 1.0
maxOffset = 0.0 maxOffset = 0.0
} else if visibleModalCount <= 1 { } else if visibleModalCount <= 1 {

View File

@@ -328,6 +328,7 @@ final class NavigationModalContainer: ASDisplayNode, UIScrollViewDelegate, UIGes
self.scrollNode.view.isScrollEnabled = !isStandaloneModal self.scrollNode.view.isScrollEnabled = !isStandaloneModal
let isLandscape = layout.orientation == .landscape
let containerLayout: ContainerViewLayout let containerLayout: ContainerViewLayout
let containerFrame: CGRect let containerFrame: CGRect
let containerScale: CGFloat let containerScale: CGFloat
@@ -336,7 +337,7 @@ final class NavigationModalContainer: ASDisplayNode, UIScrollViewDelegate, UIGes
self.panRecognizer?.isEnabled = true self.panRecognizer?.isEnabled = true
self.dim.backgroundColor = UIColor(white: 0.0, alpha: 0.25) self.dim.backgroundColor = UIColor(white: 0.0, alpha: 0.25)
self.container.clipsToBounds = true self.container.clipsToBounds = true
if isStandaloneModal { if isStandaloneModal || isLandscape {
self.container.cornerRadius = 0.0 self.container.cornerRadius = 0.0
} else { } else {
self.container.cornerRadius = 10.0 self.container.cornerRadius = 10.0
@@ -351,7 +352,7 @@ final class NavigationModalContainer: ASDisplayNode, UIScrollViewDelegate, UIGes
} }
var topInset: CGFloat var topInset: CGFloat
if isStandaloneModal { if isStandaloneModal || isLandscape {
topInset = 0.0 topInset = 0.0
containerLayout = layout containerLayout = layout