Merge branch 'develop' into feature/harmony

This commit is contained in:
Riley Testut 2018-11-12 15:00:20 -08:00
commit e3c4e52981
16 changed files with 53 additions and 195 deletions

@ -1 +1 @@
Subproject commit 89e9837cd27a6200871053af1072af1055873fbe Subproject commit 911d36bd01964ad7aeb0b4a37610402fd9845310

@ -1 +1 @@
Subproject commit d73ce5037d4f7e4852aff7642b65d0c8a1e32fb3 Subproject commit 21ba9850fb0812148d0826069f8cc3000d476a07

@ -1 +1 @@
Subproject commit 8a963b61a5e5ff0917b8e278fd07a7d99ae89c98 Subproject commit 6da27f9b694e886d6c9805ba54848b0f0a922598

@ -1 +1 @@
Subproject commit 21bb3a1e144a6c4a1b863fa1f09d1a0492de96a2 Subproject commit 5f341a67ad326829d3557d01df6977d02722a5da

View File

@ -26,6 +26,8 @@
BF0418141D01E93400E85BCF /* GBADeltaCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF0418131D01E93400E85BCF /* GBADeltaCore.framework */; }; BF0418141D01E93400E85BCF /* GBADeltaCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF0418131D01E93400E85BCF /* GBADeltaCore.framework */; };
BF0418151D01E93400E85BCF /* GBADeltaCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BF0418131D01E93400E85BCF /* GBADeltaCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; BF0418151D01E93400E85BCF /* GBADeltaCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BF0418131D01E93400E85BCF /* GBADeltaCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
BF04E6FF1DB8625C000F35D3 /* ControllerSkinsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF04E6FE1DB8625C000F35D3 /* ControllerSkinsViewController.swift */; }; BF04E6FF1DB8625C000F35D3 /* ControllerSkinsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF04E6FE1DB8625C000F35D3 /* ControllerSkinsViewController.swift */; };
BF072010219A3A9D00F05DA4 /* ZIPFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF07200E219A3A9500F05DA4 /* ZIPFoundation.framework */; };
BF072011219A3A9D00F05DA4 /* ZIPFoundation.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BF07200E219A3A9500F05DA4 /* ZIPFoundation.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
BF1020E31F95B05B00313182 /* DeltaToDelta2.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF1020E21F95B05B00313182 /* DeltaToDelta2.xcmappingmodel */; }; BF1020E31F95B05B00313182 /* DeltaToDelta2.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF1020E21F95B05B00313182 /* DeltaToDelta2.xcmappingmodel */; };
BF107EC41BF413F000E0C32C /* GamesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF107EC31BF413F000E0C32C /* GamesViewController.swift */; }; BF107EC41BF413F000E0C32C /* GamesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF107EC31BF413F000E0C32C /* GamesViewController.swift */; };
BF1173501DA32CF600047DF8 /* ControllersSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF11734F1DA32CF600047DF8 /* ControllersSettingsViewController.swift */; }; BF1173501DA32CF600047DF8 /* ControllersSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF11734F1DA32CF600047DF8 /* ControllersSettingsViewController.swift */; };
@ -140,6 +142,7 @@
BFEC732E1AAECC4A00650035 /* Roxas.framework in Embed Frameworks */, BFEC732E1AAECC4A00650035 /* Roxas.framework in Embed Frameworks */,
BF0418151D01E93400E85BCF /* GBADeltaCore.framework in Embed Frameworks */, BF0418151D01E93400E85BCF /* GBADeltaCore.framework in Embed Frameworks */,
BF99C6951D0A9AA600BA92BC /* SNESDeltaCore.framework in Embed Frameworks */, BF99C6951D0A9AA600BA92BC /* SNESDeltaCore.framework in Embed Frameworks */,
BF072011219A3A9D00F05DA4 /* ZIPFoundation.framework in Embed Frameworks */,
); );
name = "Embed Frameworks"; name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -153,6 +156,7 @@
BF02D5D91DDEBB3000A5E131 /* openvgdb.sqlite */ = {isa = PBXFileReference; lastKnownFileType = file; path = openvgdb.sqlite; sourceTree = "<group>"; }; BF02D5D91DDEBB3000A5E131 /* openvgdb.sqlite */ = {isa = PBXFileReference; lastKnownFileType = file; path = openvgdb.sqlite; sourceTree = "<group>"; };
BF0418131D01E93400E85BCF /* GBADeltaCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GBADeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; BF0418131D01E93400E85BCF /* GBADeltaCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GBADeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
BF04E6FE1DB8625C000F35D3 /* ControllerSkinsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControllerSkinsViewController.swift; sourceTree = "<group>"; }; BF04E6FE1DB8625C000F35D3 /* ControllerSkinsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControllerSkinsViewController.swift; sourceTree = "<group>"; };
BF07200E219A3A9500F05DA4 /* ZIPFoundation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ZIPFoundation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
BF090CF11B490D8300DCAB45 /* Delta-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Delta-Bridging-Header.h"; sourceTree = "<group>"; }; BF090CF11B490D8300DCAB45 /* Delta-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Delta-Bridging-Header.h"; sourceTree = "<group>"; };
BF1020E21F95B05B00313182 /* DeltaToDelta2.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = DeltaToDelta2.xcmappingmodel; sourceTree = "<group>"; }; BF1020E21F95B05B00313182 /* DeltaToDelta2.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = DeltaToDelta2.xcmappingmodel; sourceTree = "<group>"; };
BF107EC31BF413F000E0C32C /* GamesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GamesViewController.swift; sourceTree = "<group>"; }; BF107EC31BF413F000E0C32C /* GamesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GamesViewController.swift; sourceTree = "<group>"; };
@ -271,6 +275,7 @@
BFEC732D1AAECC4A00650035 /* Roxas.framework in Frameworks */, BFEC732D1AAECC4A00650035 /* Roxas.framework in Frameworks */,
BF99C6941D0A9AA600BA92BC /* SNESDeltaCore.framework in Frameworks */, BF99C6941D0A9AA600BA92BC /* SNESDeltaCore.framework in Frameworks */,
BF0418141D01E93400E85BCF /* GBADeltaCore.framework in Frameworks */, BF0418141D01E93400E85BCF /* GBADeltaCore.framework in Frameworks */,
BF072010219A3A9D00F05DA4 /* ZIPFoundation.framework in Frameworks */,
BFF0742C1E9DC17500ACDF4A /* GBCDeltaCore.framework in Frameworks */, BFF0742C1E9DC17500ACDF4A /* GBCDeltaCore.framework in Frameworks */,
4FE8465FD28810191C3E5212 /* Pods_Delta.framework in Frameworks */, 4FE8465FD28810191C3E5212 /* Pods_Delta.framework in Frameworks */,
); );
@ -551,6 +556,7 @@
BF9F4FCD1AAD7B25004C9500 /* Frameworks */ = { BF9F4FCD1AAD7B25004C9500 /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
BF07200E219A3A9500F05DA4 /* ZIPFoundation.framework */,
BFF0742B1E9DC17500ACDF4A /* GBCDeltaCore.framework */, BFF0742B1E9DC17500ACDF4A /* GBCDeltaCore.framework */,
BF0418131D01E93400E85BCF /* GBADeltaCore.framework */, BF0418131D01E93400E85BCF /* GBADeltaCore.framework */,
BF27CC941BCB7B7A00A20D89 /* GameController.framework */, BF27CC941BCB7B7A00A20D89 /* GameController.framework */,
@ -1082,7 +1088,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.3; IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
OTHER_SWIFT_FLAGS = "-Xfrontend -debug-time-function-bodies"; OTHER_SWIFT_FLAGS = "-Xfrontend -debug-time-function-bodies";
@ -1134,7 +1140,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.3; IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
OTHER_SWIFT_FLAGS = "-Xfrontend -debug-time-function-bodies"; OTHER_SWIFT_FLAGS = "-Xfrontend -debug-time-function-bodies";
PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.Delta; PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.Delta;
@ -1155,7 +1161,6 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEVELOPMENT_TEAM = 6XVY5G3U44; DEVELOPMENT_TEAM = 6XVY5G3U44;
INFOPLIST_FILE = "Delta/Supporting Files/Info.plist"; INFOPLIST_FILE = "Delta/Supporting Files/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE = "";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
@ -1175,7 +1180,6 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEVELOPMENT_TEAM = 6XVY5G3U44; DEVELOPMENT_TEAM = 6XVY5G3U44;
INFOPLIST_FILE = "Delta/Supporting Files/Info.plist"; INFOPLIST_FILE = "Delta/Supporting Files/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" -DIMPACTOR"; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" -DIMPACTOR";
PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE = "";

View File

@ -27,11 +27,8 @@ class GridCollectionViewLayout: UICollectionViewFlowLayout
guard let collectionView = self.collectionView else { return .zero } guard let collectionView = self.collectionView else { return .zero }
var contentInset = collectionView.contentInset var contentInset = collectionView.contentInset
if #available(iOS 11, *)
{
contentInset.left += collectionView.safeAreaInsets.left contentInset.left += collectionView.safeAreaInsets.left
contentInset.right += collectionView.safeAreaInsets.right contentInset.right += collectionView.safeAreaInsets.right
}
return contentInset return contentInset
} }

View File

@ -65,15 +65,8 @@ class GamesDatabaseBrowserViewController: UITableViewController
self.dataSource.searchController.delegate = self self.dataSource.searchController.delegate = self
self.dataSource.searchController.searchBar.barStyle = .black self.dataSource.searchController.searchBar.barStyle = .black
if #available(iOS 11, *)
{
self.navigationItem.searchController = self.dataSource.searchController self.navigationItem.searchController = self.dataSource.searchController
self.navigationItem.hidesSearchBarWhenScrolling = false self.navigationItem.hidesSearchBarWhenScrolling = false
}
else
{
self.tableView.tableHeaderView = self.dataSource.searchController.searchBar
}
self.updatePlaceholderView() self.updatePlaceholderView()
} }
@ -184,7 +177,7 @@ private extension GamesDatabaseBrowserViewController
func resetTableViewContentOffset() func resetTableViewContentOffset()
{ {
self.tableView.setContentOffset(CGPoint.zero, animated: false) self.tableView.setContentOffset(CGPoint.zero, animated: false)
self.tableView.setContentOffset(CGPoint(x: 0, y: -self.topLayoutGuide.length), animated: false) self.tableView.setContentOffset(CGPoint(x: 0, y: -self.view.safeAreaInsets.top), animated: false)
} }
} }
@ -204,16 +197,6 @@ extension GamesDatabaseBrowserViewController
extension GamesDatabaseBrowserViewController: UISearchControllerDelegate extension GamesDatabaseBrowserViewController: UISearchControllerDelegate
{ {
func didPresentSearchController(_ searchController: UISearchController)
{
if #available(iOS 11, *) {}
else
{
// Fix incorrect table view scroll indicator insets
self.tableView.scrollIndicatorInsets.top = self.navigationController!.navigationBar.bounds.height + UIApplication.shared.statusBarFrame.height
}
}
func willDismissSearchController(_ searchController: UISearchController) func willDismissSearchController(_ searchController: UISearchController)
{ {
// Manually set items to empty array to prevent crash if user dismissses searchController while scrolling // Manually set items to empty array to prevent crash if user dismissses searchController while scrolling

View File

@ -61,8 +61,6 @@ class GamesViewController: UIViewController
super.init(coder: aDecoder) super.init(coder: aDecoder)
self.fetchedResultsController.delegate = self self.fetchedResultsController.delegate = self
self.automaticallyAdjustsScrollViewInsets = false
} }
} }
@ -94,10 +92,7 @@ extension GamesViewController
self.navigationController?.navigationBar.barStyle = .blackTranslucent self.navigationController?.navigationBar.barStyle = .blackTranslucent
self.navigationController?.toolbar.barStyle = .blackTranslucent self.navigationController?.toolbar.barStyle = .blackTranslucent
if #available(iOS 11.0, *)
{
self.prepareSearchController() self.prepareSearchController()
}
self.updateTheme() self.updateTheme()
} }
@ -116,23 +111,6 @@ extension GamesViewController
} }
} }
override func viewDidLayoutSubviews()
{
super.viewDidLayoutSubviews()
if #available(iOS 11.0, *) {}
else
{
if let viewControllers = self.pageViewController.viewControllers as? [GameCollectionViewController]
{
for viewController in viewControllers
{
viewController.collectionView?.contentInset.top = self.topLayoutGuide.length
}
}
}
}
override func didReceiveMemoryWarning() override func didReceiveMemoryWarning()
{ {
super.didReceiveMemoryWarning() super.didReceiveMemoryWarning()
@ -164,7 +142,6 @@ extension GamesViewController
/// UI /// UI
private extension GamesViewController private extension GamesViewController
{ {
@available(iOS 11.0, *)
func prepareSearchController() func prepareSearchController()
{ {
let searchResultsController = self.storyboard?.instantiateViewController(withIdentifier: "gameCollectionViewController") as! GameCollectionViewController let searchResultsController = self.storyboard?.instantiateViewController(withIdentifier: "gameCollectionViewController") as! GameCollectionViewController
@ -249,13 +226,6 @@ private extension GamesViewController
viewController.theme = self.theme viewController.theme = self.theme
viewController.activeEmulatorCore = self.activeEmulatorCore viewController.activeEmulatorCore = self.activeEmulatorCore
if #available(iOS 11.0, *) {}
else
{
// Need to set content inset here AND willTransitionTo callback to ensure its correct for all edge cases
viewController.collectionView?.contentInset.top = self.topLayoutGuide.length
}
return viewController return viewController
} }
@ -425,20 +395,6 @@ extension GamesViewController: UIPageViewControllerDataSource, UIPageViewControl
} }
//MARK: - UIPageViewControllerDelegate //MARK: - UIPageViewControllerDelegate
func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController])
{
guard let viewControllers = pendingViewControllers as? [GameCollectionViewController] else { return }
if #available(iOS 11.0, *) {}
else
{
for viewController in viewControllers
{
viewController.collectionView?.contentInset.top = self.topLayoutGuide.length
}
}
}
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool)
{ {
if let viewController = pageViewController.viewControllers?.first as? GameCollectionViewController, let gameCollection = viewController.gameCollection if let viewController = pageViewController.viewControllers?.first as? GameCollectionViewController, let gameCollection = viewController.gameCollection

View File

@ -106,10 +106,13 @@ extension GamesStoryboardSegue: UIViewControllerAnimatedTransitioning
transitionContext.destinationView.insertSubview(topToolbar, at: 1) transitionContext.destinationView.insertSubview(topToolbar, at: 1)
topToolbar.topAnchor.constraint(equalTo: navigationController.navigationBar.topAnchor, constant: -padding).isActive = true topToolbar.topAnchor.constraint(equalTo: navigationController.navigationBar.topAnchor, constant: -padding).isActive = true
topToolbar.bottomAnchor.constraint(equalTo: navigationController.topViewController!.topLayoutGuide.bottomAnchor).isActive = true
topToolbar.leftAnchor.constraint(equalTo: navigationController.navigationBar.leftAnchor, constant: -padding).isActive = true topToolbar.leftAnchor.constraint(equalTo: navigationController.navigationBar.leftAnchor, constant: -padding).isActive = true
topToolbar.rightAnchor.constraint(equalTo: navigationController.navigationBar.rightAnchor, constant: padding).isActive = true topToolbar.rightAnchor.constraint(equalTo: navigationController.navigationBar.rightAnchor, constant: padding).isActive = true
// There is no easy way to determine the extra height necessary at this point of the transition, so hard code for now.
let additionalSearchBarHeight = 44 as CGFloat
topToolbar.heightAnchor.constraint(equalToConstant: navigationController.topViewController!.view.safeAreaInsets.top + additionalSearchBarHeight).isActive = true
topPaddingToolbar = topToolbar topPaddingToolbar = topToolbar
} }

View File

@ -65,8 +65,6 @@ class ImportController: NSObject
{ {
self.presentingViewController = presentingViewController self.presentingViewController = presentingViewController
#if IMPACTOR
let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
alertController.addAction(UIAlertAction.cancel) alertController.addAction(UIAlertAction.cancel)
@ -80,28 +78,23 @@ class ImportController: NSObject
} }
} }
let filesAction = UIAlertAction(title: NSLocalizedString("Files", comment: ""), style: .default) { (action) in
let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(ImportController.cancel))
let documentBrowserViewController = UIDocumentBrowserViewController(forOpeningFilesWithContentTypes: Array(self.documentTypes))
documentBrowserViewController.delegate = self
documentBrowserViewController.browserUserInterfaceStyle = .dark
documentBrowserViewController.allowsPickingMultipleItems = true
documentBrowserViewController.allowsDocumentCreation = false
documentBrowserViewController.additionalTrailingNavigationBarButtonItems = [cancelButton]
self.presentedViewController = documentBrowserViewController
self.presentingViewController?.present(documentBrowserViewController, animated: true, completion: nil)
}
alertController.addAction(filesAction)
self.presentedViewController = alertController self.presentedViewController = alertController
self.presentingViewController?.present(alertController, animated: true, completion: nil) self.presentingViewController?.present(alertController, animated: true, completion: nil)
#else
let documentMenuController = UIDocumentMenuViewController(documentTypes: Array(self.documentTypes), in: .import)
documentMenuController.delegate = self
if let reversedImportOptions = self.importOptions?.reversed()
{
for importOption in reversedImportOptions
{
documentMenuController.add(importOption, order: .first) { [unowned self] (urls) in
self.finish(with: urls, errors: [])
}
}
}
self.presentedViewController = documentMenuController
self.presentingViewController?.present(documentMenuController, animated: true, completion: nil)
#endif
} }
@objc private func cancel() @objc private func cancel()
@ -126,59 +119,6 @@ class ImportController: NSObject
} }
} }
extension ImportController: UIDocumentMenuDelegate
{
func documentMenu(_ documentMenu: UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController)
{
if #available(iOS 11.0, *)
{
let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(ImportController.cancel))
let documentBrowserViewController = UIDocumentBrowserViewController(forOpeningFilesWithContentTypes: Array(self.documentTypes))
documentBrowserViewController.delegate = self
documentBrowserViewController.browserUserInterfaceStyle = .dark
documentBrowserViewController.allowsPickingMultipleItems = true
documentBrowserViewController.allowsDocumentCreation = false
documentBrowserViewController.additionalTrailingNavigationBarButtonItems = [cancelButton]
self.presentedViewController = documentBrowserViewController
self.presentingViewController?.present(documentBrowserViewController, animated: true, completion: nil)
}
else
{
documentPicker.delegate = self
self.presentedViewController = documentPicker
self.presentingViewController?.present(documentPicker, animated: true, completion: nil)
}
}
func documentMenuWasCancelled(_ documentMenu: UIDocumentMenuViewController)
{
self.finish(with: nil, errors: [])
}
}
extension ImportController: UIDocumentPickerDelegate
{
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL)
{
self.finish(with: [url], errors: [])
}
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL])
{
self.finish(with: Set(urls), errors: [])
}
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController)
{
self.finish(with: nil, errors: [])
}
}
@available(iOS 11.0, *)
extension ImportController: UIDocumentBrowserViewControllerDelegate extension ImportController: UIDocumentBrowserViewControllerDelegate
{ {
func documentBrowser(_ controller: UIDocumentBrowserViewController, didPickDocumentURLs documentURLs: [URL]) func documentBrowser(_ controller: UIDocumentBrowserViewController, didPickDocumentURLs documentURLs: [URL])

View File

@ -10,16 +10,6 @@ import UIKit
import DeltaCore import DeltaCore
extension UIDocumentMenuViewController
{
func add(_ importOption: ImportOption, order: UIDocumentMenuOrder, completionHandler: @escaping (Set<URL>?) -> Void)
{
self.addOption(withTitle: importOption.title, image: importOption.image, order: order) {
importOption.import(withCompletionHandler: completionHandler)
}
}
}
extension UIAlertController extension UIAlertController
{ {
func add(_ importOption: ImportOption, completionHandler: @escaping (Set<URL>?) -> Void) func add(_ importOption: ImportOption, completionHandler: @escaping (Set<URL>?) -> Void)

View File

@ -50,12 +50,8 @@ class LaunchViewController: UIViewController
self.view.bringSubviewToFront(self.gameViewContainerView) self.view.bringSubviewToFront(self.gameViewContainerView)
self.setNeedsStatusBarAppearanceUpdate() self.setNeedsStatusBarAppearanceUpdate()
if #available(iOS 11.0, *)
{
self.setNeedsUpdateOfHomeIndicatorAutoHidden() self.setNeedsUpdateOfHomeIndicatorAutoHidden()
} }
}
if let game = self.applicationLaunchDeepLinkGame if let game = self.applicationLaunchDeepLinkGame
{ {

View File

@ -44,12 +44,8 @@ class PausePresentationController: UIPresentationController
else else
{ {
frame = CGRect(x: 0, y: containerView.bounds.height - contentHeight, width: containerView.bounds.width, height: containerView.bounds.height) frame = CGRect(x: 0, y: containerView.bounds.height - contentHeight, width: containerView.bounds.width, height: containerView.bounds.height)
if #available(iOS 11.0, *)
{
frame.origin.y -= containerView.safeAreaInsets.bottom frame.origin.y -= containerView.safeAreaInsets.bottom
} }
}
return frame return frame
} }

View File

@ -38,15 +38,8 @@ class AppIconShortcutsViewController: UITableViewController
self.tableView.register(GameTableViewCell.nib!, forCellReuseIdentifier: RSTCellContentGenericCellIdentifier) self.tableView.register(GameTableViewCell.nib!, forCellReuseIdentifier: RSTCellContentGenericCellIdentifier)
if #available(iOS 11, *)
{
self.navigationItem.searchController = self.gamesDataSource.searchController self.navigationItem.searchController = self.gamesDataSource.searchController
self.navigationItem.hidesSearchBarWhenScrolling = false self.navigationItem.hidesSearchBarWhenScrolling = false
}
else
{
self.tableView.tableHeaderView = self.gamesDataSource.searchController.searchBar
}
self.tableView.dataSource = self.dataSource self.tableView.dataSource = self.dataSource
self.tableView.allowsSelectionDuringEditing = true self.tableView.allowsSelectionDuringEditing = true

View File

@ -151,7 +151,7 @@ extension ControllerSkinsViewController
let scale = (self.view.bounds.width / size.width) let scale = (self.view.bounds.width / size.width)
let height = min(size.height * scale, self.view.bounds.height - self.topLayoutGuide.length - self.bottomLayoutGuide.length - 30) let height = min(size.height * scale, self.view.bounds.height - self.view.safeAreaInsets.top - self.view.safeAreaInsets.bottom - 30)
return height return height
} }

View File

@ -92,7 +92,7 @@ extension SystemControllerSkinsViewController
let scale = (self.view.bounds.width / unwrappedImageSize.width) let scale = (self.view.bounds.width / unwrappedImageSize.width)
let height = min(unwrappedImageSize.height * scale, self.view.bounds.height - self.topLayoutGuide.length - self.bottomLayoutGuide.length - 30) let height = min(unwrappedImageSize.height * scale, self.view.bounds.height - self.view.safeAreaInsets.top - self.view.safeAreaInsets.bottom - 30)
return height return height
} }