mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
UI bug fixes
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user