UI bug fixes

This commit is contained in:
Ali
2021-05-15 01:20:26 +04:00
parent 6854173dae
commit 918b069431
134 changed files with 4372 additions and 3913 deletions

View File

@@ -74,6 +74,16 @@ public enum TabBarItemContextActionType {
}
@objc open class ViewController: UIViewController, ContainableController {
public struct NavigationLayout {
public var navigationFrame: CGRect
public var defaultContentHeight: CGFloat
public init(navigationFrame: CGRect, defaultContentHeight: CGFloat) {
self.navigationFrame = navigationFrame
self.defaultContentHeight = defaultContentHeight
}
}
private var validLayout: ContainerViewLayout?
public var currentlyAppliedLayout: ContainerViewLayout? {
return self.validLayout
@@ -194,35 +204,28 @@ public enum TabBarItemContextActionType {
open var hasActiveInput: Bool = false
private var navigationBarOrigin: CGFloat = 0.0
public var navigationOffset: CGFloat = 0.0 {
didSet {
if let navigationBar = self.navigationBar {
var navigationBarFrame = navigationBar.frame
navigationBarFrame.origin.y = self.navigationBarOrigin + self.navigationOffset
navigationBar.frame = navigationBarFrame
}
}
}
open var navigationHeight: CGFloat {
if let navigationBar = self.navigationBar {
return navigationBar.frame.maxY
open func navigationLayout(layout: ContainerViewLayout) -> NavigationLayout {
let statusBarHeight: CGFloat = layout.statusBarHeight ?? 0.0
var defaultNavigationBarHeight: CGFloat
if self._presentedInModal {
defaultNavigationBarHeight = 56.0
} else {
return 0.0
defaultNavigationBarHeight = 44.0
}
}
open var navigationInsetHeight: CGFloat {
if let navigationBar = self.navigationBar {
var height = navigationBar.frame.maxY
if let contentNode = navigationBar.contentNode, case .expansion = contentNode.mode {
height += contentNode.nominalHeight - contentNode.height
}
return height
} else {
return 0.0
let navigationBarHeight: CGFloat = statusBarHeight + (self.navigationBar?.contentHeight(defaultHeight: defaultNavigationBarHeight) ?? defaultNavigationBarHeight)
var navigationBarFrame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: layout.size.width, height: navigationBarHeight))
navigationBarFrame.size.height += self.additionalNavigationBarHeight
if !self.displayNavigationBar {
navigationBarFrame.origin.y = -navigationBarFrame.size.height
}
self.navigationBarOrigin = navigationBarFrame.origin.y
return NavigationLayout(navigationFrame: navigationBarFrame, defaultContentHeight: defaultNavigationBarHeight)
}
open var cleanNavigationHeight: CGFloat {
@@ -236,21 +239,11 @@ public enum TabBarItemContextActionType {
return 0.0
}
}
open var visualNavigationInsetHeight: CGFloat {
if let navigationBar = self.navigationBar {
let height = navigationBar.frame.maxY
if let contentNode = navigationBar.contentNode, case .expansion = contentNode.mode {
//height += contentNode.height
}
return height
} else {
return 0.0
}
open var additionalNavigationBarHeight: CGFloat {
return 0.0
}
public var additionalNavigationBarHeight: CGFloat = 0.0
public var additionalSideInsets: UIEdgeInsets = UIEdgeInsets()
private let _ready = Promise<Bool>(true)
@@ -375,42 +368,31 @@ public enum TabBarItemContextActionType {
}
open func updateNavigationBarLayout(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
self.applyNavigationBarLayout(layout, additionalBackgroundHeight: 0.0, transition: transition)
self.applyNavigationBarLayout(layout, navigationLayout: self.navigationLayout(layout: layout), additionalBackgroundHeight: 0.0, transition: transition)
}
public func applyNavigationBarLayout(_ layout: ContainerViewLayout, additionalBackgroundHeight: CGFloat, transition: ContainedViewLayoutTransition) {
public func applyNavigationBarLayout(_ layout: ContainerViewLayout, navigationLayout: NavigationLayout, additionalBackgroundHeight: CGFloat, transition: ContainedViewLayoutTransition) {
let statusBarHeight: CGFloat = layout.statusBarHeight ?? 0.0
var defaultNavigationBarHeight: CGFloat
if self._presentedInModal {
defaultNavigationBarHeight = 56.0
} else {
defaultNavigationBarHeight = 44.0
}
let navigationBarHeight: CGFloat = statusBarHeight + (self.navigationBar?.contentHeight(defaultHeight: defaultNavigationBarHeight) ?? defaultNavigationBarHeight)
let navigationBarOffset: CGFloat
if statusBarHeight.isZero {
navigationBarOffset = 0.0
} else {
navigationBarOffset = 0.0
}
var navigationBarFrame = CGRect(origin: CGPoint(x: 0.0, y: navigationBarOffset), size: CGSize(width: layout.size.width, height: navigationBarHeight))
var navigationBarFrame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: layout.size.width, height: navigationLayout.navigationFrame.maxY))
if !self.displayNavigationBar {
navigationBarFrame.origin.y = -navigationBarFrame.size.height
}
self.navigationBarOrigin = navigationBarFrame.origin.y
navigationBarFrame.origin.y += self.navigationOffset
if let navigationBar = self.navigationBar {
if let contentNode = navigationBar.contentNode, case .expansion = contentNode.mode, !self.displayNavigationBar {
navigationBarFrame.origin.y += contentNode.height + statusBarHeight
navigationBarFrame.origin.y -= navigationLayout.defaultContentHeight
navigationBarFrame.size.height += contentNode.height + navigationLayout.defaultContentHeight + statusBarHeight
//navigationBarFrame.origin.y += contentNode.height + statusBarHeight
}
if let _ = navigationBar.contentNode, let _ = navigationBar.secondaryContentNode, !self.displayNavigationBar {
navigationBarFrame.origin.y += NavigationBar.defaultSecondaryContentHeight
navigationBarFrame.size.height += NavigationBar.defaultSecondaryContentHeight
//navigationBarFrame.origin.y += NavigationBar.defaultSecondaryContentHeight
}
navigationBar.updateLayout(size: navigationBarFrame.size, defaultHeight: defaultNavigationBarHeight, additionalHeight: 0.0, additionalBackgroundHeight: additionalBackgroundHeight, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right, appearsHidden: !self.displayNavigationBar, transition: transition)
navigationBar.updateLayout(size: navigationBarFrame.size, defaultHeight: navigationLayout.defaultContentHeight, additionalTopHeight: statusBarHeight, additionalContentHeight: self.additionalNavigationBarHeight, additionalBackgroundHeight: additionalBackgroundHeight, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right, appearsHidden: !self.displayNavigationBar, transition: transition)
if !transition.isAnimated {
navigationBar.layer.cancelAnimationsRecursive(key: "bounds")
navigationBar.layer.cancelAnimationsRecursive(key: "position")