From 70114359050975e12e540d376ae231f06ca3298d Mon Sep 17 00:00:00 2001 From: Boyko Mihail Date: Thu, 1 Oct 2020 19:46:40 +0300 Subject: [PATCH] cherry-pick ccc085df3c5df7bd16f99188055b3036449d4c75 --- LeadKit.xcodeproj/project.pbxproj | 4 +++ .../BaseConfigurableController.swift | 28 +---------------- .../BaseOrientationController.swift | 30 +++++++++++++++++++ 3 files changed, 35 insertions(+), 27 deletions(-) create mode 100644 Sources/Classes/Controllers/BaseOrientationController.swift diff --git a/LeadKit.xcodeproj/project.pbxproj b/LeadKit.xcodeproj/project.pbxproj index 7a65525e..d44851f8 100644 --- a/LeadKit.xcodeproj/project.pbxproj +++ b/LeadKit.xcodeproj/project.pbxproj @@ -23,6 +23,7 @@ 52421F8F24EAB84900948DD1 /* BaseRxTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52421F8E24EAB84900948DD1 /* BaseRxTableViewCell.swift */; }; 52421F9424EBCFAE00948DD1 /* VoidTappableViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52421F9324EBCFAE00948DD1 /* VoidTappableViewModel.swift */; }; 52421F9624EBCFBB00948DD1 /* BaseTappableViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52421F9524EBCFBB00948DD1 /* BaseTappableViewModel.swift */; }; + 5E23631F25263EFA00E2F96B /* BaseOrientationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E23631E25263EFA00E2F96B /* BaseOrientationController.swift */; }; 5ED2C0B2251A354E00D4E258 /* BaseOrientationNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ED2C0B1251A354E00D4E258 /* BaseOrientationNavigationController.swift */; }; 5ED2C0B5251A366700D4E258 /* UIDevice+ScreenOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ED2C0B4251A366700D4E258 /* UIDevice+ScreenOrientation.swift */; }; 67051ADB1EBC7C36008EADC0 /* SpinnerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67051ADA1EBC7C36008EADC0 /* SpinnerView.swift */; }; @@ -563,6 +564,7 @@ 52421F8E24EAB84900948DD1 /* BaseRxTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseRxTableViewCell.swift; sourceTree = ""; }; 52421F9324EBCFAE00948DD1 /* VoidTappableViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoidTappableViewModel.swift; sourceTree = ""; }; 52421F9524EBCFBB00948DD1 /* BaseTappableViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTappableViewModel.swift; sourceTree = ""; }; + 5E23631E25263EFA00E2F96B /* BaseOrientationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseOrientationController.swift; sourceTree = ""; }; 5ED2C0B1251A354E00D4E258 /* BaseOrientationNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseOrientationNavigationController.swift; sourceTree = ""; }; 5ED2C0B4251A366700D4E258 /* UIDevice+ScreenOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDevice+ScreenOrientation.swift"; sourceTree = ""; }; 67051ADA1EBC7C36008EADC0 /* SpinnerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpinnerView.swift; sourceTree = ""; }; @@ -1549,6 +1551,7 @@ 675E0AA821072FF400CDC143 /* BaseScrollContentController.swift */, 67DB776321086A12001CB56B /* BaseTableContentController.swift */, 5ED2C0B1251A354E00D4E258 /* BaseOrientationNavigationController.swift */, + 5E23631E25263EFA00E2F96B /* BaseOrientationController.swift */, ); path = Controllers; sourceTree = ""; @@ -2586,6 +2589,7 @@ 671463081EB3396E00EAB194 /* UIView+Rotation.swift in Sources */, 6714626C1EB3396E00EAB194 /* XibView.swift in Sources */, 67274778206CD0B500725163 /* UILabel+ViewTextConfigurable.swift in Sources */, + 5E23631F25263EFA00E2F96B /* BaseOrientationController.swift in Sources */, 67ED2BE520B44F4300508B3E /* InitializableView+DefaultImplementation.swift in Sources */, 36FE777020F669E300284C09 /* String+ConvertToHost.swift in Sources */, 6774529220625D170024EEEF /* GeneralDataLoadingModel.swift in Sources */, diff --git a/Sources/Classes/Controllers/BaseConfigurableController.swift b/Sources/Classes/Controllers/BaseConfigurableController.swift index fc50616e..9b8a3dee 100644 --- a/Sources/Classes/Controllers/BaseConfigurableController.swift +++ b/Sources/Classes/Controllers/BaseConfigurableController.swift @@ -23,37 +23,11 @@ import UIKit.UIViewController /// Base controller that should be configured with view model. -open class BaseConfigurableController: UIViewController, ConfigurableController { - - /// Ability to set forced screen orientation - open var forcedInterfaceOrientation: UIInterfaceOrientation? +open class BaseConfigurableController: BaseOrientationController, ConfigurableController { /// A view model instance used by this controller. public let viewModel: ViewModel - open override var supportedInterfaceOrientations: UIInterfaceOrientationMask { - switch forcedInterfaceOrientation { - case .landscapeLeft: - return .landscapeLeft - - case .landscapeRight: - return .landscapeRight - - case .portrait: - return .portrait - - case .portraitUpsideDown: - return .portraitUpsideDown - - default: - return super.supportedInterfaceOrientations - } - } - - open override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation { - forcedInterfaceOrientation ?? super.preferredInterfaceOrientationForPresentation - } - /// Initializer with view model parameter. /// /// - Parameter viewModel: A view model to configure this controller. diff --git a/Sources/Classes/Controllers/BaseOrientationController.swift b/Sources/Classes/Controllers/BaseOrientationController.swift new file mode 100644 index 00000000..13a85aff --- /dev/null +++ b/Sources/Classes/Controllers/BaseOrientationController.swift @@ -0,0 +1,30 @@ +import Foundation + +open class BaseOrientationController: UIViewController { + + /// Ability to set forced screen orientation + open var forcedInterfaceOrientation: UIInterfaceOrientation? + + open override var supportedInterfaceOrientations: UIInterfaceOrientationMask { + switch forcedInterfaceOrientation { + case .landscapeLeft: + return .landscapeLeft + + case .landscapeRight: + return .landscapeRight + + case .portrait: + return .portrait + + case .portraitUpsideDown: + return .portraitUpsideDown + + default: + return super.supportedInterfaceOrientations + } + } + + open override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation { + return forcedInterfaceOrientation ?? super.preferredInterfaceOrientationForPresentation + } +}