From 137fb758a6e2c473290465c62a49c191ea0fe65b Mon Sep 17 00:00:00 2001 From: marcoschmickler Date: Sun, 14 Jun 2026 00:47:11 +0200 Subject: [PATCH] modernize scene --- kplayer/Base.lproj/Main.storyboard | 3 -- kplayer/SceneDelegate.swift | 45 +++++++++-------------- kplayer/master/MasterViewController.swift | 9 ----- 3 files changed, 17 insertions(+), 40 deletions(-) diff --git a/kplayer/Base.lproj/Main.storyboard b/kplayer/Base.lproj/Main.storyboard index 1a84ec6..e920196 100644 --- a/kplayer/Base.lproj/Main.storyboard +++ b/kplayer/Base.lproj/Main.storyboard @@ -1,8 +1,5 @@ - - - diff --git a/kplayer/SceneDelegate.swift b/kplayer/SceneDelegate.swift index 881cef5..1e2e818 100644 --- a/kplayer/SceneDelegate.swift +++ b/kplayer/SceneDelegate.swift @@ -24,25 +24,26 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate, UISplitViewControllerDe private func setupSplitViewController() { guard let storyboardSplit = window?.rootViewController as? UISplitViewController else { return } - let split = installModernSplitViewIfNeeded(storyboardSplit) + guard let split = modernSplitView(from: storyboardSplit) else { return } configureSplitViewDisplay(split) split.delegate = self - let detailNav = detailNavigationController(in: split) + let detailNav = split.viewController(for: .secondary) as? UINavigationController detailNav?.topViewController?.navigationItem.leftBarButtonItem = nil - guard let masterNav = masterNavigationController(in: split), + guard let masterNav = split.viewController(for: .primary) as? UINavigationController, let controller = masterNav.topViewController as? MasterViewController else { return } controller.delegate = NetworkDelegate() controller.model.items = LocalManager.sharedInstance.model!.items } - private func installModernSplitViewIfNeeded(_ split: UISplitViewController) -> UISplitViewController { - guard split.style == .unspecified, - let primary = split.viewControllers.first, + private func modernSplitView(from split: UISplitViewController) -> UISplitViewController? { + guard split.style != .doubleColumn else { return split } + + guard let primary = split.viewControllers.first, let secondary = split.viewControllers.last else { - return split + return nil } let modernSplit = UISplitViewController(style: .doubleColumn) @@ -53,33 +54,23 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate, UISplitViewControllerDe } private func configureSplitViewDisplay(_ split: UISplitViewController) { - split.minimumPrimaryColumnWidth = 280 - split.maximumPrimaryColumnWidth = 380 - split.preferredPrimaryColumnWidthFraction = 0.30 - guard UIDevice.current.userInterfaceIdiom == .pad else { split.preferredDisplayMode = .automatic return } - split.preferredSplitBehavior = .tile - split.preferredDisplayMode = .oneBesideSecondary - } - - private func masterNavigationController(in split: UISplitViewController) -> UINavigationController? { - if split.style == .doubleColumn { - return split.viewController(for: .primary) as? UINavigationController - } - - return split.viewControllers.first as? UINavigationController - } + split.minimumPrimaryColumnWidth = 220 + split.maximumPrimaryColumnWidth = 280 + split.preferredPrimaryColumnWidth = 240 - private func detailNavigationController(in split: UISplitViewController) -> UINavigationController? { - if split.style == .doubleColumn { - return split.viewController(for: .secondary) as? UINavigationController + if #available(iOS 26.0, *) { + split.minimumSecondaryColumnWidth = 320 + split.preferredSecondaryColumnWidthFraction = 0.68 } - return split.viewControllers.last as? UINavigationController + split.preferredSplitBehavior = .tile + split.preferredDisplayMode = .oneBesideSecondary + split.show(.primary) } // MARK: - Split view @@ -94,8 +85,6 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate, UISplitViewControllerDe } func splitViewController(_ svc: UISplitViewController, displayModeForExpandingToProposedDisplayMode proposedDisplayMode: UISplitViewController.DisplayMode) -> UISplitViewController.DisplayMode { - configureSplitViewDisplay(svc) - if UIDevice.current.userInterfaceIdiom == .pad { return .oneBesideSecondary } diff --git a/kplayer/master/MasterViewController.swift b/kplayer/master/MasterViewController.swift index bcdb6eb..751f97c 100644 --- a/kplayer/master/MasterViewController.swift +++ b/kplayer/master/MasterViewController.swift @@ -30,14 +30,6 @@ class MasterViewController: UITableViewController, UISearchResultsUpdating, UITa var currentSelection: MediaItem? - override func awakeFromNib() { - super.awakeFromNib() - if UIDevice.current.userInterfaceIdiom == .pad { - clearsSelectionOnViewWillAppear = false - preferredContentSize = CGSize(width: 320.0, height: 600.0) - } - } - override func viewDidLoad() { searchController.searchResultsUpdater = self searchController.dimsBackgroundDuringPresentation = false @@ -454,4 +446,3 @@ class MasterViewController: UITableViewController, UISearchResultsUpdating, UITa } } -