Browse Source

modernize scene

master
marcoschmickler 1 week ago
parent
commit
137fb758a6
  1. 3
      kplayer/Base.lproj/Main.storyboard
  2. 45
      kplayer/SceneDelegate.swift
  3. 9
      kplayer/master/MasterViewController.swift

3
kplayer/Base.lproj/Main.storyboard

@ -1,8 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12118" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="H1p-Uh-vWS">
<device id="ipad9_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/>

45
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
}

9
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
}
}
Loading…
Cancel
Save