summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadVPN/Containers/CustomSplitViewController.swift
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2023-03-07 15:16:59 +0100
committerAndrej Mihajlov <and@mullvad.net>2023-03-22 16:42:30 +0100
commita51757ce590b5063c1c8099b3ed8ea0fa8b3bcdb (patch)
tree85935823680100affad563ebeca45a07a71938ee /ios/MullvadVPN/Containers/CustomSplitViewController.swift
parent1c2c6f58dc1d175d00bea8037ca989ca80b1fcb8 (diff)
downloadmullvadvpn-a51757ce590b5063c1c8099b3ed8ea0fa8b3bcdb.tar.xz
mullvadvpn-a51757ce590b5063c1c8099b3ed8ea0fa8b3bcdb.zip
Add coordinators and app router
Fixes IOS-10
Diffstat (limited to 'ios/MullvadVPN/Containers/CustomSplitViewController.swift')
-rw-r--r--ios/MullvadVPN/Containers/CustomSplitViewController.swift82
1 files changed, 82 insertions, 0 deletions
diff --git a/ios/MullvadVPN/Containers/CustomSplitViewController.swift b/ios/MullvadVPN/Containers/CustomSplitViewController.swift
new file mode 100644
index 0000000000..d4eb5ffd8f
--- /dev/null
+++ b/ios/MullvadVPN/Containers/CustomSplitViewController.swift
@@ -0,0 +1,82 @@
+//
+// CustomSplitViewController.swift
+// MullvadVPN
+//
+// Created by pronebird on 07/04/2021.
+// Copyright © 2021 Mullvad VPN AB. All rights reserved.
+//
+
+import UIKit
+
+class CustomSplitViewController: UISplitViewController, RootContainment {
+ var preferredHeaderBarPresentation: HeaderBarPresentation {
+ for case let viewController as RootContainment in viewControllers {
+ return viewController.preferredHeaderBarPresentation
+ }
+ return .default
+ }
+
+ var prefersHeaderBarHidden: Bool {
+ for case let viewController as RootContainment in viewControllers {
+ return viewController.prefersHeaderBarHidden
+ }
+ return false
+ }
+
+ var dividerColor: UIColor? {
+ didSet {
+ if isViewLoaded {
+ self.updateDividerColor()
+ }
+ }
+ }
+
+ override var childForStatusBarStyle: UIViewController? {
+ super.childForStatusBarStyle
+ }
+
+ override var childForStatusBarHidden: UIViewController? {
+ super.childForStatusBarHidden
+ }
+
+ override func viewDidLayoutSubviews() {
+ super.viewDidLayoutSubviews()
+
+ updateDividerColor()
+ }
+
+ private var dividerView: UIView? {
+ let subviews = view.subviews.flatMap { view -> [UIView] in
+ return [view] + view.subviews
+ }
+
+ return subviews.first { view -> Bool in
+ return view.description.hasPrefix("<UIPanelBorderView")
+ }
+ }
+
+ private func updateDividerColor() {
+ guard let dividerColor = dividerColor else { return }
+
+ dividerView?.backgroundColor = dividerColor
+ }
+
+ override func overrideTraitCollection(forChild childViewController: UIViewController)
+ -> UITraitCollection?
+ {
+ guard let traitCollection = super.overrideTraitCollection(forChild: childViewController)
+ else { return nil }
+
+ // Pass the split controller's horizontal size class to the primary controller when split
+ // view is expanded.
+ if !isCollapsed, childViewController == viewControllers.last {
+ let sizeOverrideTraitCollection = UITraitCollection(
+ horizontalSizeClass: self.traitCollection.horizontalSizeClass
+ )
+
+ return UITraitCollection(traitsFrom: [traitCollection, sizeOverrideTraitCollection])
+ } else {
+ return traitCollection
+ }
+ }
+}