diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2023-03-07 15:16:59 +0100 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2023-03-22 16:42:30 +0100 |
| commit | a51757ce590b5063c1c8099b3ed8ea0fa8b3bcdb (patch) | |
| tree | 85935823680100affad563ebeca45a07a71938ee /ios/MullvadVPN/Containers/CustomSplitViewController.swift | |
| parent | 1c2c6f58dc1d175d00bea8037ca989ca80b1fcb8 (diff) | |
| download | mullvadvpn-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.swift | 82 |
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 + } + } +} |
