Merge branch 'develop' into feature/harmony
This commit is contained in:
commit
e3c4e52981
@ -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
|
||||||
@ -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 = "";
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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])
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user