From a189db034a1fc9b0bb1f58618670f96720e0e7f5 Mon Sep 17 00:00:00 2001 From: Ernesto Rivera Date: Wed, 16 Sep 2020 15:44:26 -0400 Subject: [PATCH 01/14] Preliminary SwiftUI support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For now it will simply add a `UIHostingController` `view` to the `contentView`. I commented out calls needed for proper view controller containment because it doesn’t play well with my `UINavigationController`. --- .../ContainerController.swift | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/Sources/ContainerController/ContainerController.swift b/Sources/ContainerController/ContainerController.swift index a058a05..01f99d6 100644 --- a/Sources/ContainerController/ContainerController.swift +++ b/Sources/ContainerController/ContainerController.swift @@ -7,6 +7,7 @@ // import UIKit +import SwiftUI open class ContainerController: NSObject { @@ -24,6 +25,8 @@ open class ContainerController: NSObject { public var footerView: UIView? + public var hostingController: UIHostingController? + // MARK: Layout public var layout: ContainerLayout = ContainerLayout() @@ -451,6 +454,29 @@ open class ContainerController: NSObject { calculationViews() } + // MARK: - Add SwiftUI View + + public func removeSwiftUIView() { +// self.hostingController?.willMove(toParent: nil) + self.hostingController?.view.removeFromSuperview() +// self.hostingController?.removeFromParent() + self.hostingController = nil + } + + public func add(swiftUIView: V) { + guard let contentView = self.view.contentView else { + return + } + removeSwiftUIView() + let hostingController = UIHostingController(rootView: AnyView(swiftUIView)) + self.hostingController = hostingController +// self.controller?.addChild(hostingController) + hostingController.view.frame = contentView.bounds + hostingController.view.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin] + contentView.addSubview(hostingController.view) +// hostingController.didMove(toParent: self.controller) + } + // MARK: - Pan Gesture @objc private func handlePan(_ gesture: UIPanGestureRecognizer) { From 099b6e21bc0b895d100377d6ac09a34334bdaa3c Mon Sep 17 00:00:00 2001 From: Ernesto Rivera Date: Mon, 21 Sep 2020 15:26:02 -0400 Subject: [PATCH 02/14] Properly add/remove child UIHostingController from parent --- .../ContainerController/ContainerController.swift | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Sources/ContainerController/ContainerController.swift b/Sources/ContainerController/ContainerController.swift index 23e104a..3400cdc 100644 --- a/Sources/ContainerController/ContainerController.swift +++ b/Sources/ContainerController/ContainerController.swift @@ -458,24 +458,25 @@ open class ContainerController: NSObject { // MARK: - Add SwiftUI View public func removeSwiftUIView() { -// self.hostingController?.willMove(toParent: nil) + self.hostingController?.willMove(toParent: nil) self.hostingController?.view.removeFromSuperview() -// self.hostingController?.removeFromParent() + self.hostingController?.removeFromParent() self.hostingController = nil } - public func add(swiftUIView: V) { + public func add(swiftUIView: V, parentViewController: UIViewController? = nil) { guard let contentView = self.view.contentView else { return } removeSwiftUIView() let hostingController = UIHostingController(rootView: AnyView(swiftUIView)) self.hostingController = hostingController -// self.controller?.addChild(hostingController) + let parent = parentViewController ?? self.controller + parent?.addChild(hostingController) hostingController.view.frame = contentView.bounds - hostingController.view.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin] + hostingController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight] contentView.addSubview(hostingController.view) -// hostingController.didMove(toParent: self.controller) + hostingController.didMove(toParent: parent) } // MARK: - Pan Gesture From 12b496223120048aaeb712c150a30a0167930e1c Mon Sep 17 00:00:00 2001 From: Ernesto Rivera Date: Tue, 12 Jan 2021 11:10:09 -0400 Subject: [PATCH 03/14] Conditionally exclude code non armv7-compatible --- Sources/ContainerController/ContainerController.swift | 5 +++++ .../ContainerController/ContainerControllerDelegate.swift | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/Sources/ContainerController/ContainerController.swift b/Sources/ContainerController/ContainerController.swift index 3400cdc..dcbd274 100644 --- a/Sources/ContainerController/ContainerController.swift +++ b/Sources/ContainerController/ContainerController.swift @@ -6,6 +6,8 @@ // Copyright © 2020 mrustaa. All rights reserved. // +#if arch(x86_64) || arch(arm64) + import UIKit import SwiftUI @@ -1378,3 +1380,6 @@ extension ContainerController: UIScrollViewDelegate { } } + +#endif + diff --git a/Sources/ContainerController/ContainerControllerDelegate.swift b/Sources/ContainerController/ContainerControllerDelegate.swift index 8391e34..d680f7f 100644 --- a/Sources/ContainerController/ContainerControllerDelegate.swift +++ b/Sources/ContainerController/ContainerControllerDelegate.swift @@ -6,6 +6,8 @@ // Copyright © 2020 mrustaa. All rights reserved. // +#if arch(x86_64) || arch(arm64) + import UIKit @available(iOS 13.0, *) @@ -36,3 +38,5 @@ public extension ContainerControllerDelegate { } } +#endif + From 410f53dc1cb7dcf5508772549add37bab7d185a7 Mon Sep 17 00:00:00 2001 From: rmotygullin Date: Wed, 3 Nov 2021 14:01:00 +0300 Subject: [PATCH 04/14] FixRotation: (Issues During Rotation) is isPortrait remove orientation .portraitUpsideDown --- Sources/ContainerController/ContainerDevice.swift | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Sources/ContainerController/ContainerDevice.swift b/Sources/ContainerController/ContainerDevice.swift index a394db1..897822d 100644 --- a/Sources/ContainerController/ContainerDevice.swift +++ b/Sources/ContainerController/ContainerDevice.swift @@ -10,7 +10,6 @@ import UIKit @available(iOS 13.0, *) public extension ContainerDevice { - enum Orientation { case portrait case landscapeLeft @@ -85,7 +84,7 @@ open class ContainerDevice { switch UIDevice.current.orientation { case .landscapeLeft, .landscapeRight: portrait = false - case .portrait, .portraitUpsideDown: + case .portrait: portrait = true default: break } @@ -120,6 +119,4 @@ open class ContainerDevice { return .landscapeLeft } } - - } From 72759913ae68305d6c9d2b457b51a90107d03d82 Mon Sep 17 00:00:00 2001 From: mrustaa Date: Wed, 3 Nov 2021 14:02:00 +0300 Subject: [PATCH 05/14] FixRotation: (Issues During Rotation) is isPortrait remove orientation .portraitUpsideDown --- Sources/ContainerController/ContainerDevice.swift | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Sources/ContainerController/ContainerDevice.swift b/Sources/ContainerController/ContainerDevice.swift index a394db1..897822d 100644 --- a/Sources/ContainerController/ContainerDevice.swift +++ b/Sources/ContainerController/ContainerDevice.swift @@ -10,7 +10,6 @@ import UIKit @available(iOS 13.0, *) public extension ContainerDevice { - enum Orientation { case portrait case landscapeLeft @@ -85,7 +84,7 @@ open class ContainerDevice { switch UIDevice.current.orientation { case .landscapeLeft, .landscapeRight: portrait = false - case .portrait, .portraitUpsideDown: + case .portrait: portrait = true default: break } @@ -120,6 +119,4 @@ open class ContainerDevice { return .landscapeLeft } } - - } From 08975badd3d78fa10bad03bf8b6d4aead5daf674 Mon Sep 17 00:00:00 2001 From: rmotygullin Date: Thu, 4 Nov 2021 14:01:00 +0300 Subject: [PATCH 06/14] FixRotation: Create extension UIDeviceOrientation + Add property Boolean .isRotateAllowed, .face --- Sources/ContainerController/ContainerDevice.swift | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Sources/ContainerController/ContainerDevice.swift b/Sources/ContainerController/ContainerDevice.swift index 897822d..7738823 100644 --- a/Sources/ContainerController/ContainerDevice.swift +++ b/Sources/ContainerController/ContainerDevice.swift @@ -120,3 +120,17 @@ open class ContainerDevice { } } } + +public extension UIDeviceOrientation { + + var isRotateAllowed: Bool { + return !(face || self == .portraitUpsideDown) + } + + var face: Bool { + switch self { + case .faceUp, .faceDown: return true + default: return false + } + } +} From ca43421a8f941f4cc320db1cba2d2d95c696ea82 Mon Sep 17 00:00:00 2001 From: mrustaa Date: Thu, 4 Nov 2021 14:02:00 +0300 Subject: [PATCH 07/14] FixRotation: Create extension UIDeviceOrientation + Add property Boolean .isRotateAllowed, .face --- Sources/ContainerController/ContainerDevice.swift | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Sources/ContainerController/ContainerDevice.swift b/Sources/ContainerController/ContainerDevice.swift index 897822d..7738823 100644 --- a/Sources/ContainerController/ContainerDevice.swift +++ b/Sources/ContainerController/ContainerDevice.swift @@ -120,3 +120,17 @@ open class ContainerDevice { } } } + +public extension UIDeviceOrientation { + + var isRotateAllowed: Bool { + return !(face || self == .portraitUpsideDown) + } + + var face: Bool { + switch self { + case .faceUp, .faceDown: return true + default: return false + } + } +} From 139082d366c069dd99028e6c3d2b20073044d038 Mon Sep 17 00:00:00 2001 From: rmotygullin Date: Fri, 5 Nov 2021 14:01:00 +0300 Subject: [PATCH 08/14] FixRotation: (Issues During Rotation) Fix Completed --- Example/ContainerControllerSwift/Maps/MapsViewController.swift | 3 +-- Sources/ContainerController/ContainerController.swift | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Example/ContainerControllerSwift/Maps/MapsViewController.swift b/Example/ContainerControllerSwift/Maps/MapsViewController.swift index 4662934..69763d0 100644 --- a/Example/ContainerControllerSwift/Maps/MapsViewController.swift +++ b/Example/ContainerControllerSwift/Maps/MapsViewController.swift @@ -105,8 +105,7 @@ class MapsViewController: StoryboardController, MapsContainerControllerDelegate, @objc func rotated() { - let orint = UIDevice.current.orientation - if orint == .faceUp || orint == .faceDown || orint == .portraitUpsideDown { return } + if !UIDevice.current.orientation.isRotateAllowed { return } updateMapViewTopPadding() } diff --git a/Sources/ContainerController/ContainerController.swift b/Sources/ContainerController/ContainerController.swift index 640568e..c857554 100644 --- a/Sources/ContainerController/ContainerController.swift +++ b/Sources/ContainerController/ContainerController.swift @@ -211,8 +211,7 @@ open class ContainerController: NSObject { @objc func rotated() { - let orint = UIDevice.current.orientation - if orint == .faceUp || orint == .faceDown || orint == .portraitUpsideDown { return } + if !UIDevice.current.orientation.isRotateAllowed { return } if ContainerDevice.orientation == oldOrientation { return } oldOrientation = ContainerDevice.orientation From fed617321fb4b507e5b50900273e633896fa9013 Mon Sep 17 00:00:00 2001 From: mrustaa Date: Fri, 5 Nov 2021 14:02:00 +0300 Subject: [PATCH 09/14] FixRotation: (Issues During Rotation) Fix Completed Testing --- Example/ContainerControllerSwift/Maps/MapsViewController.swift | 3 +-- Sources/ContainerController/ContainerController.swift | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Example/ContainerControllerSwift/Maps/MapsViewController.swift b/Example/ContainerControllerSwift/Maps/MapsViewController.swift index 4662934..69763d0 100644 --- a/Example/ContainerControllerSwift/Maps/MapsViewController.swift +++ b/Example/ContainerControllerSwift/Maps/MapsViewController.swift @@ -105,8 +105,7 @@ class MapsViewController: StoryboardController, MapsContainerControllerDelegate, @objc func rotated() { - let orint = UIDevice.current.orientation - if orint == .faceUp || orint == .faceDown || orint == .portraitUpsideDown { return } + if !UIDevice.current.orientation.isRotateAllowed { return } updateMapViewTopPadding() } diff --git a/Sources/ContainerController/ContainerController.swift b/Sources/ContainerController/ContainerController.swift index 640568e..c857554 100644 --- a/Sources/ContainerController/ContainerController.swift +++ b/Sources/ContainerController/ContainerController.swift @@ -211,8 +211,7 @@ open class ContainerController: NSObject { @objc func rotated() { - let orint = UIDevice.current.orientation - if orint == .faceUp || orint == .faceDown || orint == .portraitUpsideDown { return } + if !UIDevice.current.orientation.isRotateAllowed { return } if ContainerDevice.orientation == oldOrientation { return } oldOrientation = ContainerDevice.orientation From 3c2848ffd197eab777c33d9e5dd82f63c7b43a45 Mon Sep 17 00:00:00 2001 From: mrustaa Date: Tue, 16 Nov 2021 14:35:31 +0300 Subject: [PATCH 10/14] Update podspec --- ContainerControllerSwift.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ContainerControllerSwift.podspec b/ContainerControllerSwift.podspec index d0ac693..2013252 100644 --- a/ContainerControllerSwift.podspec +++ b/ContainerControllerSwift.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = 'ContainerControllerSwift' - s.version = '1.1.2' + s.version = '1.1.3' s.summary = 'This is a swipe-panel from application: https://www.apple.com/ios/maps/' # This description is used to generate tags and improve search results. From f2e8d4411fc2e08a45ccd3e35a01a6cf12c29987 Mon Sep 17 00:00:00 2001 From: mrustaa Date: Tue, 16 Nov 2021 15:03:18 +0300 Subject: [PATCH 11/14] Update podspec only Source --- ContainerControllerSwift.podspec | 3 +- .../project.pbxproj | 1357 ----------------- .../contents.xcworkspacedata | 7 - .../ContainerControllerSwift-Example.xcscheme | 111 -- .../contents.xcworkspacedata | 13 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../AppDelegate.swift | 46 - .../Base.lproj/LaunchScreen.xib | 42 - .../Base.lproj/Main.storyboard | 58 - ...mpleAddCollectionViewController.storyboard | 26 - .../ExampleAddCollectionViewController.swift | 116 -- .../ExampleAddTableViewController.storyboard | 26 - .../ExampleAddTableViewController.swift | 92 -- ...xampleAddTableViewControllerSettings.swift | 92 -- .../ExamplesContainerController.swift | 273 ---- ...xamplesContainerControllerScrollType.swift | 25 - .../Container/ExamplesScrollViews.swift | 138 -- .../ExamplesSettingsViewController.storyboard | 41 - .../ExamplesSettingsViewController.swift | 124 -- .../UI/Cell/ExampleCell.swift | 57 - .../UI/Cell/ExampleCellStyle.swift | 51 - .../ExampleSegmentCell.swift | 106 -- .../ExampleSegmentCell/ExampleSegmentCell.xib | 53 - .../ExampleSliderCell/ExampleSliderCell.swift | 131 -- .../ExampleSliderCell/ExampleSliderCell.xib | 59 - .../ExampleSwitchCell/ExampleSwitchCell.swift | 94 -- .../ExampleSwitchCell/ExampleSwitchCell.xib | 52 - .../UI/Cell/TitleTextCell/TitleTextCell.swift | 117 -- .../UI/Cell/TitleTextCell/TitleTextCell.xib | 66 - .../ExampleCollectionCell.swift | 91 -- .../ExampleCollectionCell.xib | 65 - .../ExampleFooterButtonView.swift | 28 - .../ExampleFooterButtonView.xib | 72 - .../ExampleHeaderGripView.swift | 28 - .../ExampleHeaderGripView.xib | 68 - .../ExampleHeaderGripView/headerShadow.png | Bin 17393 -> 0 bytes .../DesignableViews/DesignButton.swift | 134 -- .../DesignableViews/DesignView.swift | 73 - .../LoadNib/StoryboardController.swift | 31 - .../Framework/LoadNib/XibView.swift | 99 -- .../Framework/Utils/Color.swift | 59 - .../Framework/Utils/UIView+Positioning.swift | 193 --- .../AppIcon.appiconset/Contents.json | 116 -- .../AppIcon.appiconset/appIcon-1024.png | Bin 414061 -> 0 bytes .../AppIcon.appiconset/appIcon-20.png | Bin 1882 -> 0 bytes .../AppIcon.appiconset/appIcon-20@2x.png | Bin 3241 -> 0 bytes .../AppIcon.appiconset/appIcon-20@3x.png | Bin 5046 -> 0 bytes .../AppIcon.appiconset/appIcon-29.png | Bin 2430 -> 0 bytes .../AppIcon.appiconset/appIcon-29@2x.png | Bin 4882 -> 0 bytes .../AppIcon.appiconset/appIcon-29@3x.png | Bin 8428 -> 0 bytes .../AppIcon.appiconset/appIcon-40.png | Bin 3241 -> 0 bytes .../AppIcon.appiconset/appIcon-40@2x.png | Bin 7444 -> 0 bytes .../AppIcon.appiconset/appIcon-40@3x.png | Bin 13435 -> 0 bytes .../AppIcon.appiconset/appIcon-60@2x.png | Bin 13435 -> 0 bytes .../AppIcon.appiconset/appIcon-60@3x.png | Bin 25390 -> 0 bytes .../AppIcon.appiconset/appIcon-76.png | Bin 6957 -> 0 bytes .../AppIcon.appiconset/appIcon-76@2x.png | Bin 19599 -> 0 bytes .../AppIcon.appiconset/appIcon-83.5@2x.png | Bin 22407 -> 0 bytes .../Images.xcassets/Contents.json | 6 - Example/ContainerControllerSwift/Info.plist | 68 - .../Localization/LocalizationManager.swift | 273 ---- .../Localization/LocalizeFuncs.swift | 23 - .../Localization/en.lproj/InfoPlist.strings | 9 - .../Localization/en.lproj/Localizable.strings | 88 -- .../Localization/ru.lproj/InfoPlist.strings | 10 - .../Localization/ru.lproj/Localizable.strings | 87 -- .../LocationContainerController.swift | 141 -- .../LocationContainerControllerDelegate.swift | 21 - .../Maps/MapsContainerController.swift | 206 --- .../MapsContainerControllerDelegate.swift | 18 - .../Menu/MenuContainerController.swift | 126 -- .../MenuContainerControllerDelegate.swift | 19 - .../Route/RouteContainerController.swift | 181 --- .../RouteContainerControllerDelegate.swift | 19 - .../Layout/MapsContainerLayout.swift | 69 - .../Layout/MapsMainContainerLayout.swift | 29 - .../Layout/MapsMenuContainerLayout.swift | 36 - .../Layout/MapsRouteContainerLayout.swift | 29 - .../Maps/MapManager/MapViewManager.swift | 261 ---- .../Maps/MapsViewController.storyboard | 85 -- .../Maps/MapsViewController.swift | 437 ------ .../LocationAddressCell.swift | 85 -- .../LocationAddressCell.xib | 68 - .../LocationButtonCell.swift | 127 -- .../LocationButtonCell/LocationButtonCell.xib | 133 -- .../LocationCollectionsButtonCell.swift | 58 - .../LocationCollectionsButtonCell.xib | 203 --- .../LocationCoordinateCell.swift | 101 -- .../LocationCoordinateCell.xib | 113 -- .../LocationTextCell/LocationTextCell.swift | 83 - .../LocationTextCell/LocationTextCell.xib | 82 - .../MapsCollectionCellView.swift | 36 - .../MapsCollectionsCell.swift | 60 - .../MapsCollectionsCell.xib | 122 -- .../MapsFavoritesCell/MapsFavoritesCell.swift | 98 -- .../MapsFavoritesCell/MapsFavoritesCell.xib | 44 - .../MapsLocationCell/MapsLocationCell.swift | 108 -- .../MapsLocationCell/MapsLocationCell.xib | 151 -- .../MapsSectionCell/MapsSectionCell.swift | 72 - .../Maps/MapsSectionCell/MapsSectionCell.xib | 60 - .../MapsMenuSegmentCell.swift | 94 -- .../MapsMenuSegmentCell.xib | 68 - .../MapsMenuSpaceCell/MapsMenuSpaceCell.swift | 65 - .../MapsMenuSpaceCell/MapsMenuSpaceCell.xib | 39 - .../MapsMenuTextCell/MapsMenuTextCell.swift | 94 -- .../MapsMenuTextCell/MapsMenuTextCell.xib | 65 - .../Route/MapsRouteCell/MapsRouteCell.swift | 107 -- .../Route/MapsRouteCell/MapsRouteCell.xib | 128 -- .../MapsSearchCell/MapsSearchCell.swift | 95 -- .../Search/MapsSearchCell/MapsSearchCell.xib | 113 -- .../MapsFavoriteCell/MapsFavoriteCell.swift | 123 -- .../MapsFavoriteCell/MapsFavoriteCell.xib | 90 -- .../View/Main/MapsButtons/MapsButtons.swift | 69 - .../UI/View/Main/MapsButtons/MapsButtons.xib | 88 -- .../MapsWeatherView/MapsWeatherView.swift | 46 - .../Main/MapsWeatherView/MapsWeatherView.xib | 52 - .../HeaderDetailsView/HeaderDetailsView.swift | 44 - .../HeaderDetailsView/HeaderDetailsView.xib | 144 -- .../HeaderSearchBarView.swift | 76 - .../HeaderSearchBarView.xib | 69 - .../Menu/MapsMenuHeader/MapsMenuHeader.swift | 49 - .../Menu/MapsMenuHeader/MapsMenuHeader.xib | 95 -- .../HeaderTabBarView/HeaderTabBarView.swift | 54 - .../HeaderTabBarView/HeaderTabBarView.xib | 92 -- .../TableHeaderSpinerView.swift | 23 - .../TableHeaderSpinerView.xib | 54 - .../SceneDelegate.swift | 53 - .../ViewController.swift | 54 - .../screenLandscape5.png | Bin 521233 -> 0 bytes Example/Podfile | 10 - Example/Podfile.lock | 16 - .../ContainerControllerSwift.podspec.json | 24 - Example/Pods/Manifest.lock | 16 - Example/Pods/Pods.xcodeproj/project.pbxproj | 863 ----------- .../ContainerControllerSwift-Info.plist | 26 - .../ContainerControllerSwift-dummy.m | 5 - .../ContainerControllerSwift-prefix.pch | 12 - .../ContainerControllerSwift-umbrella.h | 16 - .../ContainerControllerSwift.debug.xcconfig | 10 - .../ContainerControllerSwift.modulemap | 6 - .../ContainerControllerSwift.release.xcconfig | 10 - ...ontainerControllerSwift_Example-Info.plist | 26 - ...lerSwift_Example-acknowledgements.markdown | 26 - ...rollerSwift_Example-acknowledgements.plist | 58 - ...s-ContainerControllerSwift_Example-dummy.m | 5 - ...ainerControllerSwift_Example-frameworks.sh | 207 --- ...ontainerControllerSwift_Example-umbrella.h | 16 - ...inerControllerSwift_Example.debug.xcconfig | 12 - ...ContainerControllerSwift_Example.modulemap | 6 - ...erControllerSwift_Example.release.xcconfig | 12 - ...-ContainerControllerSwift_Tests-Info.plist | 26 - ...ollerSwift_Tests-acknowledgements.markdown | 3 - ...ntrollerSwift_Tests-acknowledgements.plist | 29 - ...ods-ContainerControllerSwift_Tests-dummy.m | 5 - ...ntainerControllerSwift_Tests-frameworks.sh | 207 --- ...-ContainerControllerSwift_Tests-umbrella.h | 16 - ...tainerControllerSwift_Tests.debug.xcconfig | 9 - ...s-ContainerControllerSwift_Tests.modulemap | 6 - ...inerControllerSwift_Tests.release.xcconfig | 9 - 159 files changed, 2 insertions(+), 12319 deletions(-) delete mode 100644 Example/ContainerControllerSwift.xcodeproj/project.pbxproj delete mode 100644 Example/ContainerControllerSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 Example/ContainerControllerSwift.xcodeproj/xcshareddata/xcschemes/ContainerControllerSwift-Example.xcscheme delete mode 100644 Example/ContainerControllerSwift.xcworkspace/contents.xcworkspacedata delete mode 100644 Example/ContainerControllerSwift.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 Example/ContainerControllerSwift/AppDelegate.swift delete mode 100644 Example/ContainerControllerSwift/Base.lproj/LaunchScreen.xib delete mode 100644 Example/ContainerControllerSwift/Base.lproj/Main.storyboard delete mode 100644 Example/ContainerControllerSwift/ExampleAddCollectionView/ExampleAddCollectionViewController.storyboard delete mode 100644 Example/ContainerControllerSwift/ExampleAddCollectionView/ExampleAddCollectionViewController.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewController.storyboard delete mode 100644 Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewController.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesContainerController.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesContainerControllerScrollType.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesScrollViews.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/ExamplesSettingsViewController.storyboard delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/ExamplesSettingsViewController.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCell.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCellStyle.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.xib delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.xib delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.xib delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.xib delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.xib delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.xib delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib delete mode 100644 Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/headerShadow.png delete mode 100644 Example/ContainerControllerSwift/Framework/DesignableViews/DesignButton.swift delete mode 100644 Example/ContainerControllerSwift/Framework/DesignableViews/DesignView.swift delete mode 100644 Example/ContainerControllerSwift/Framework/LoadNib/StoryboardController.swift delete mode 100644 Example/ContainerControllerSwift/Framework/LoadNib/XibView.swift delete mode 100644 Example/ContainerControllerSwift/Framework/Utils/Color.swift delete mode 100755 Example/ContainerControllerSwift/Framework/Utils/UIView+Positioning.swift delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-1024.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-20.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-20@2x.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-20@3x.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-29.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-29@2x.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-29@3x.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-40.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-40@2x.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-40@3x.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-60@2x.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-60@3x.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-76.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-76@2x.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-83.5@2x.png delete mode 100644 Example/ContainerControllerSwift/Images.xcassets/Contents.json delete mode 100644 Example/ContainerControllerSwift/Info.plist delete mode 100644 Example/ContainerControllerSwift/Localization/LocalizationManager.swift delete mode 100644 Example/ContainerControllerSwift/Localization/LocalizeFuncs.swift delete mode 100644 Example/ContainerControllerSwift/Localization/en.lproj/InfoPlist.strings delete mode 100644 Example/ContainerControllerSwift/Localization/en.lproj/Localizable.strings delete mode 100644 Example/ContainerControllerSwift/Localization/ru.lproj/InfoPlist.strings delete mode 100644 Example/ContainerControllerSwift/Localization/ru.lproj/Localizable.strings delete mode 100644 Example/ContainerControllerSwift/Maps/Container/Controller/LocationDetails/LocationContainerController.swift delete mode 100644 Example/ContainerControllerSwift/Maps/Container/Controller/LocationDetails/LocationContainerControllerDelegate.swift delete mode 100644 Example/ContainerControllerSwift/Maps/Container/Controller/Maps/MapsContainerController.swift delete mode 100644 Example/ContainerControllerSwift/Maps/Container/Controller/Maps/MapsContainerControllerDelegate.swift delete mode 100644 Example/ContainerControllerSwift/Maps/Container/Controller/Menu/MenuContainerController.swift delete mode 100644 Example/ContainerControllerSwift/Maps/Container/Controller/Menu/MenuContainerControllerDelegate.swift delete mode 100644 Example/ContainerControllerSwift/Maps/Container/Controller/Route/RouteContainerController.swift delete mode 100644 Example/ContainerControllerSwift/Maps/Container/Controller/Route/RouteContainerControllerDelegate.swift delete mode 100644 Example/ContainerControllerSwift/Maps/Container/Layout/MapsContainerLayout.swift delete mode 100644 Example/ContainerControllerSwift/Maps/Container/Layout/MapsMainContainerLayout.swift delete mode 100644 Example/ContainerControllerSwift/Maps/Container/Layout/MapsMenuContainerLayout.swift delete mode 100644 Example/ContainerControllerSwift/Maps/Container/Layout/MapsRouteContainerLayout.swift delete mode 100644 Example/ContainerControllerSwift/Maps/MapManager/MapViewManager.swift delete mode 100644 Example/ContainerControllerSwift/Maps/MapsViewController.storyboard delete mode 100644 Example/ContainerControllerSwift/Maps/MapsViewController.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionCellView.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Main/MapsButtons/MapsButtons.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Main/MapsButtons/MapsButtons.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.xib delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.swift delete mode 100644 Example/ContainerControllerSwift/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.xib delete mode 100644 Example/ContainerControllerSwift/SceneDelegate.swift delete mode 100644 Example/ContainerControllerSwift/ViewController.swift delete mode 100644 Example/ContainerControllerSwift/screenLandscape5.png delete mode 100644 Example/Podfile delete mode 100644 Example/Podfile.lock delete mode 100644 Example/Pods/Local Podspecs/ContainerControllerSwift.podspec.json delete mode 100644 Example/Pods/Manifest.lock delete mode 100644 Example/Pods/Pods.xcodeproj/project.pbxproj delete mode 100644 Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-Info.plist delete mode 100644 Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-dummy.m delete mode 100644 Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-prefix.pch delete mode 100644 Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-umbrella.h delete mode 100644 Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.debug.xcconfig delete mode 100644 Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.modulemap delete mode 100644 Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.release.xcconfig delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-Info.plist delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.markdown delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.plist delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-dummy.m delete mode 100755 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-frameworks.sh delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-umbrella.h delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.debug.xcconfig delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.modulemap delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.release.xcconfig delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-Info.plist delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-acknowledgements.markdown delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-acknowledgements.plist delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-dummy.m delete mode 100755 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-frameworks.sh delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-umbrella.h delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.debug.xcconfig delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.modulemap delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.release.xcconfig diff --git a/ContainerControllerSwift.podspec b/ContainerControllerSwift.podspec index 2013252..df6b7f2 100644 --- a/ContainerControllerSwift.podspec +++ b/ContainerControllerSwift.podspec @@ -33,7 +33,8 @@ TODO: Add long description of the pod here. # s.ios.deployment_target = '13.0' s.platform = :ios, "13.0" - s.source_files = 'ContainerControllerSwift/**/*.{swift}' + s.source_files = '**/ContainerControllerSwift/**/*.{swift}' + s.exclude_files = '**/ContainerControllerSwift/**/*.plist' s.framework = "UIKit" # s.ios.framework = 'UIKit' diff --git a/Example/ContainerControllerSwift.xcodeproj/project.pbxproj b/Example/ContainerControllerSwift.xcodeproj/project.pbxproj deleted file mode 100644 index d6fada8..0000000 --- a/Example/ContainerControllerSwift.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1357 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 46ACF0552490F52600FAAD43 /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFD82490F52500FAAD43 /* Color.swift */; }; - 46ACF0562490F52600FAAD43 /* UIView+Positioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFD92490F52500FAAD43 /* UIView+Positioning.swift */; }; - 46ACF0572490F52600FAAD43 /* StoryboardController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFDC2490F52500FAAD43 /* StoryboardController.swift */; }; - 46ACF0582490F52600FAAD43 /* XibView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFDE2490F52500FAAD43 /* XibView.swift */; }; - 46ACF0592490F52600FAAD43 /* DesignButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFE02490F52500FAAD43 /* DesignButton.swift */; }; - 46ACF05A2490F52600FAAD43 /* DesignView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFE12490F52500FAAD43 /* DesignView.swift */; }; - 46ACF05B2490F52600FAAD43 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 46ACEFE32490F52500FAAD43 /* Localizable.strings */; }; - 46ACF05C2490F52600FAAD43 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 46ACEFE52490F52500FAAD43 /* InfoPlist.strings */; }; - 46ACF05D2490F52600FAAD43 /* LocalizationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFE72490F52500FAAD43 /* LocalizationManager.swift */; }; - 46ACF05E2490F52600FAAD43 /* LocalizeFuncs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFEA2490F52500FAAD43 /* LocalizeFuncs.swift */; }; - 46ACF05F2490F52600FAAD43 /* MapsFavoriteCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFEF2490F52500FAAD43 /* MapsFavoriteCell.swift */; }; - 46ACF0602490F52600FAAD43 /* MapsFavoriteCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACEFF02490F52500FAAD43 /* MapsFavoriteCell.xib */; }; - 46ACF0612490F52600FAAD43 /* MapsFavoritesCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACEFF42490F52500FAAD43 /* MapsFavoritesCell.xib */; }; - 46ACF0622490F52600FAAD43 /* MapsFavoritesCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFF52490F52500FAAD43 /* MapsFavoritesCell.swift */; }; - 46ACF0632490F52600FAAD43 /* MapsCollectionCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFF72490F52500FAAD43 /* MapsCollectionCellView.swift */; }; - 46ACF0642490F52600FAAD43 /* MapsCollectionsCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACEFF82490F52500FAAD43 /* MapsCollectionsCell.xib */; }; - 46ACF0652490F52600FAAD43 /* MapsCollectionsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFF92490F52500FAAD43 /* MapsCollectionsCell.swift */; }; - 46ACF0662490F52600FAAD43 /* MapsLocationCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACEFFB2490F52500FAAD43 /* MapsLocationCell.xib */; }; - 46ACF0672490F52600FAAD43 /* MapsLocationCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFFC2490F52500FAAD43 /* MapsLocationCell.swift */; }; - 46ACF0682490F52600FAAD43 /* MapsSectionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACEFFE2490F52500FAAD43 /* MapsSectionCell.xib */; }; - 46ACF0692490F52600FAAD43 /* MapsSectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFFF2490F52500FAAD43 /* MapsSectionCell.swift */; }; - 46ACF06A2490F52600FAAD43 /* MapsRouteCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0022490F52500FAAD43 /* MapsRouteCell.xib */; }; - 46ACF06B2490F52600FAAD43 /* MapsRouteCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0032490F52500FAAD43 /* MapsRouteCell.swift */; }; - 46ACF06C2490F52600FAAD43 /* LocationCoordinateCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0062490F52500FAAD43 /* LocationCoordinateCell.xib */; }; - 46ACF06D2490F52600FAAD43 /* LocationCoordinateCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0072490F52500FAAD43 /* LocationCoordinateCell.swift */; }; - 46ACF06E2490F52600FAAD43 /* LocationAddressCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0092490F52500FAAD43 /* LocationAddressCell.swift */; }; - 46ACF06F2490F52600FAAD43 /* LocationAddressCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF00A2490F52500FAAD43 /* LocationAddressCell.xib */; }; - 46ACF0702490F52600FAAD43 /* LocationCollectionsButtonCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF00C2490F52500FAAD43 /* LocationCollectionsButtonCell.xib */; }; - 46ACF0712490F52600FAAD43 /* LocationCollectionsButtonCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF00D2490F52500FAAD43 /* LocationCollectionsButtonCell.swift */; }; - 46ACF0722490F52600FAAD43 /* LocationButtonCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF00F2490F52500FAAD43 /* LocationButtonCell.xib */; }; - 46ACF0732490F52600FAAD43 /* LocationButtonCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0102490F52500FAAD43 /* LocationButtonCell.swift */; }; - 46ACF0742490F52600FAAD43 /* LocationTextCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0122490F52500FAAD43 /* LocationTextCell.xib */; }; - 46ACF0752490F52600FAAD43 /* LocationTextCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0132490F52500FAAD43 /* LocationTextCell.swift */; }; - 46ACF0762490F52600FAAD43 /* MapsSearchCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0162490F52600FAAD43 /* MapsSearchCell.xib */; }; - 46ACF0772490F52600FAAD43 /* MapsSearchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0172490F52600FAAD43 /* MapsSearchCell.swift */; }; - 46ACF0782490F52600FAAD43 /* MapsMenuSpaceCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF01A2490F52600FAAD43 /* MapsMenuSpaceCell.swift */; }; - 46ACF0792490F52600FAAD43 /* MapsMenuSpaceCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF01B2490F52600FAAD43 /* MapsMenuSpaceCell.xib */; }; - 46ACF07A2490F52600FAAD43 /* MapsMenuSegmentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF01D2490F52600FAAD43 /* MapsMenuSegmentCell.swift */; }; - 46ACF07B2490F52600FAAD43 /* MapsMenuSegmentCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF01E2490F52600FAAD43 /* MapsMenuSegmentCell.xib */; }; - 46ACF07C2490F52600FAAD43 /* MapsMenuTextCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0202490F52600FAAD43 /* MapsMenuTextCell.xib */; }; - 46ACF07D2490F52600FAAD43 /* MapsMenuTextCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0212490F52600FAAD43 /* MapsMenuTextCell.swift */; }; - 46ACF07E2490F52600FAAD43 /* HeaderDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0252490F52600FAAD43 /* HeaderDetailsView.swift */; }; - 46ACF07F2490F52600FAAD43 /* HeaderDetailsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0262490F52600FAAD43 /* HeaderDetailsView.xib */; }; - 46ACF0802490F52600FAAD43 /* HeaderSearchBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0282490F52600FAAD43 /* HeaderSearchBarView.swift */; }; - 46ACF0812490F52600FAAD43 /* HeaderSearchBarView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0292490F52600FAAD43 /* HeaderSearchBarView.xib */; }; - 46ACF0822490F52600FAAD43 /* TableHeaderSpinerView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF02C2490F52600FAAD43 /* TableHeaderSpinerView.xib */; }; - 46ACF0832490F52600FAAD43 /* TableHeaderSpinerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF02D2490F52600FAAD43 /* TableHeaderSpinerView.swift */; }; - 46ACF0842490F52600FAAD43 /* HeaderTabBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF02F2490F52600FAAD43 /* HeaderTabBarView.swift */; }; - 46ACF0852490F52600FAAD43 /* HeaderTabBarView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0302490F52600FAAD43 /* HeaderTabBarView.xib */; }; - 46ACF0862490F52600FAAD43 /* MapsMenuHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0332490F52600FAAD43 /* MapsMenuHeader.swift */; }; - 46ACF0872490F52600FAAD43 /* MapsMenuHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0342490F52600FAAD43 /* MapsMenuHeader.xib */; }; - 46ACF0882490F52600FAAD43 /* MapsButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0372490F52600FAAD43 /* MapsButtons.swift */; }; - 46ACF0892490F52600FAAD43 /* MapsButtons.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0382490F52600FAAD43 /* MapsButtons.xib */; }; - 46ACF08A2490F52600FAAD43 /* MapsWeatherView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF03A2490F52600FAAD43 /* MapsWeatherView.xib */; }; - 46ACF08B2490F52600FAAD43 /* MapsWeatherView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF03B2490F52600FAAD43 /* MapsWeatherView.swift */; }; - 46ACF08C2490F52600FAAD43 /* MapsViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF03C2490F52600FAAD43 /* MapsViewController.storyboard */; }; - 46ACF08D2490F52600FAAD43 /* MapsRouteContainerLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF03F2490F52600FAAD43 /* MapsRouteContainerLayout.swift */; }; - 46ACF08E2490F52600FAAD43 /* MapsMenuContainerLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0402490F52600FAAD43 /* MapsMenuContainerLayout.swift */; }; - 46ACF08F2490F52600FAAD43 /* MapsMainContainerLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0412490F52600FAAD43 /* MapsMainContainerLayout.swift */; }; - 46ACF0902490F52600FAAD43 /* MapsContainerLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0422490F52600FAAD43 /* MapsContainerLayout.swift */; }; - 46ACF0912490F52600FAAD43 /* MapsContainerControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0452490F52600FAAD43 /* MapsContainerControllerDelegate.swift */; }; - 46ACF0922490F52600FAAD43 /* MapsContainerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0462490F52600FAAD43 /* MapsContainerController.swift */; }; - 46ACF0932490F52600FAAD43 /* RouteContainerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0482490F52600FAAD43 /* RouteContainerController.swift */; }; - 46ACF0942490F52600FAAD43 /* RouteContainerControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0492490F52600FAAD43 /* RouteContainerControllerDelegate.swift */; }; - 46ACF0952490F52600FAAD43 /* LocationContainerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF04B2490F52600FAAD43 /* LocationContainerController.swift */; }; - 46ACF0962490F52600FAAD43 /* LocationContainerControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF04C2490F52600FAAD43 /* LocationContainerControllerDelegate.swift */; }; - 46ACF0972490F52600FAAD43 /* MenuContainerControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF04E2490F52600FAAD43 /* MenuContainerControllerDelegate.swift */; }; - 46ACF0982490F52600FAAD43 /* MenuContainerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF04F2490F52600FAAD43 /* MenuContainerController.swift */; }; - 46ACF0992490F52600FAAD43 /* MapViewManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0512490F52600FAAD43 /* MapViewManager.swift */; }; - 46ACF09A2490F52600FAAD43 /* MapsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0522490F52600FAAD43 /* MapsViewController.swift */; }; - 46ACF09E2490FE2700FAAD43 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF09D2490FE2700FAAD43 /* SceneDelegate.swift */; }; - 46ACF0C22490FEB300FAAD43 /* ExampleCollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0A32490FEB200FAAD43 /* ExampleCollectionCell.swift */; }; - 46ACF0C32490FEB300FAAD43 /* ExampleCollectionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0A42490FEB200FAAD43 /* ExampleCollectionCell.xib */; }; - 46ACF0C42490FEB300FAAD43 /* ExampleCellStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0A62490FEB200FAAD43 /* ExampleCellStyle.swift */; }; - 46ACF0C52490FEB300FAAD43 /* ExampleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0A72490FEB200FAAD43 /* ExampleCell.swift */; }; - 46ACF0C62490FEB300FAAD43 /* ExampleSegmentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0A92490FEB200FAAD43 /* ExampleSegmentCell.swift */; }; - 46ACF0C72490FEB300FAAD43 /* ExampleSegmentCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0AA2490FEB200FAAD43 /* ExampleSegmentCell.xib */; }; - 46ACF0C82490FEB300FAAD43 /* ExampleSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0AC2490FEB200FAAD43 /* ExampleSwitchCell.swift */; }; - 46ACF0C92490FEB300FAAD43 /* ExampleSwitchCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0AD2490FEB200FAAD43 /* ExampleSwitchCell.xib */; }; - 46ACF0CA2490FEB300FAAD43 /* TitleTextCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0AF2490FEB200FAAD43 /* TitleTextCell.xib */; }; - 46ACF0CB2490FEB300FAAD43 /* TitleTextCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0B02490FEB200FAAD43 /* TitleTextCell.swift */; }; - 46ACF0CC2490FEB300FAAD43 /* ExampleSliderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0B22490FEB200FAAD43 /* ExampleSliderCell.swift */; }; - 46ACF0CD2490FEB300FAAD43 /* ExampleSliderCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0B32490FEB200FAAD43 /* ExampleSliderCell.xib */; }; - 46ACF0CE2490FEB300FAAD43 /* ExampleFooterButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0B62490FEB200FAAD43 /* ExampleFooterButtonView.swift */; }; - 46ACF0CF2490FEB300FAAD43 /* ExampleFooterButtonView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0B72490FEB300FAAD43 /* ExampleFooterButtonView.xib */; }; - 46ACF0D02490FEB300FAAD43 /* headerShadow.png in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0B92490FEB300FAAD43 /* headerShadow.png */; }; - 46ACF0D12490FEB300FAAD43 /* ExampleHeaderGripView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0BA2490FEB300FAAD43 /* ExampleHeaderGripView.swift */; }; - 46ACF0D22490FEB300FAAD43 /* ExampleHeaderGripView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0BB2490FEB300FAAD43 /* ExampleHeaderGripView.xib */; }; - 46ACF0D32490FEB300FAAD43 /* ExamplesSettingsViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0BC2490FEB300FAAD43 /* ExamplesSettingsViewController.storyboard */; }; - 46ACF0D42490FEB300FAAD43 /* ExamplesContainerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0BE2490FEB300FAAD43 /* ExamplesContainerController.swift */; }; - 46ACF0D52490FEB300FAAD43 /* ExamplesContainerControllerScrollType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0BF2490FEB300FAAD43 /* ExamplesContainerControllerScrollType.swift */; }; - 46ACF0D62490FEB300FAAD43 /* ExamplesScrollViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0C02490FEB300FAAD43 /* ExamplesScrollViews.swift */; }; - 46ACF0D72490FEB300FAAD43 /* ExamplesSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0C12490FEB300FAAD43 /* ExamplesSettingsViewController.swift */; }; - 46ACF0D92491A75300FAAD43 /* screenLandscape5.png in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0D82491A75300FAAD43 /* screenLandscape5.png */; }; - 46ACF0E3249255ED00FAAD43 /* ExampleAddCollectionViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0E1249255ED00FAAD43 /* ExampleAddCollectionViewController.storyboard */; }; - 46ACF0E4249255ED00FAAD43 /* ExampleAddCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0E2249255ED00FAAD43 /* ExampleAddCollectionViewController.swift */; }; - 46ACF0E824925B9200FAAD43 /* ExampleAddTableViewControllerSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0E524925B9200FAAD43 /* ExampleAddTableViewControllerSettings.swift */; }; - 46ACF0E924925B9200FAAD43 /* ExampleAddTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACF0E624925B9200FAAD43 /* ExampleAddTableViewController.swift */; }; - 46ACF0EA24925B9200FAAD43 /* ExampleAddTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 46ACF0E724925B9200FAAD43 /* ExampleAddTableViewController.storyboard */; }; - 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; }; - 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* ViewController.swift */; }; - 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; }; - 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; - 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; - 968DB7E5EF2DD4AE15D171EB /* Pods_ContainerControllerSwift_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 121FB933CAE3EC5A2A00F4B2 /* Pods_ContainerControllerSwift_Example.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 01C7EF19A8C89AA4D02D74D2 /* Pods-ContainerControllerSwift_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ContainerControllerSwift_Tests.debug.xcconfig"; path = "Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.debug.xcconfig"; sourceTree = ""; }; - 0AA8BF39B9F182FE833C0178 /* Pods-ContainerControllerSwift_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ContainerControllerSwift_Example.debug.xcconfig"; path = "Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.debug.xcconfig"; sourceTree = ""; }; - 1034FE614CC8890CE063531F /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; - 121FB933CAE3EC5A2A00F4B2 /* Pods_ContainerControllerSwift_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ContainerControllerSwift_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 46ACEFD82490F52500FAAD43 /* Color.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Color.swift; sourceTree = ""; }; - 46ACEFD92490F52500FAAD43 /* UIView+Positioning.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Positioning.swift"; sourceTree = ""; }; - 46ACEFDC2490F52500FAAD43 /* StoryboardController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoryboardController.swift; sourceTree = ""; }; - 46ACEFDE2490F52500FAAD43 /* XibView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XibView.swift; sourceTree = ""; }; - 46ACEFE02490F52500FAAD43 /* DesignButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DesignButton.swift; sourceTree = ""; }; - 46ACEFE12490F52500FAAD43 /* DesignView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DesignView.swift; sourceTree = ""; }; - 46ACEFE42490F52500FAAD43 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; - 46ACEFE62490F52500FAAD43 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 46ACEFE72490F52500FAAD43 /* LocalizationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalizationManager.swift; sourceTree = ""; }; - 46ACEFE82490F52500FAAD43 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; - 46ACEFE92490F52500FAAD43 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; - 46ACEFEA2490F52500FAAD43 /* LocalizeFuncs.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalizeFuncs.swift; sourceTree = ""; }; - 46ACEFEF2490F52500FAAD43 /* MapsFavoriteCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsFavoriteCell.swift; sourceTree = ""; }; - 46ACEFF02490F52500FAAD43 /* MapsFavoriteCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsFavoriteCell.xib; sourceTree = ""; }; - 46ACEFF42490F52500FAAD43 /* MapsFavoritesCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsFavoritesCell.xib; sourceTree = ""; }; - 46ACEFF52490F52500FAAD43 /* MapsFavoritesCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsFavoritesCell.swift; sourceTree = ""; }; - 46ACEFF72490F52500FAAD43 /* MapsCollectionCellView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsCollectionCellView.swift; sourceTree = ""; }; - 46ACEFF82490F52500FAAD43 /* MapsCollectionsCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsCollectionsCell.xib; sourceTree = ""; }; - 46ACEFF92490F52500FAAD43 /* MapsCollectionsCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsCollectionsCell.swift; sourceTree = ""; }; - 46ACEFFB2490F52500FAAD43 /* MapsLocationCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsLocationCell.xib; sourceTree = ""; }; - 46ACEFFC2490F52500FAAD43 /* MapsLocationCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsLocationCell.swift; sourceTree = ""; }; - 46ACEFFE2490F52500FAAD43 /* MapsSectionCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsSectionCell.xib; sourceTree = ""; }; - 46ACEFFF2490F52500FAAD43 /* MapsSectionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsSectionCell.swift; sourceTree = ""; }; - 46ACF0022490F52500FAAD43 /* MapsRouteCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsRouteCell.xib; sourceTree = ""; }; - 46ACF0032490F52500FAAD43 /* MapsRouteCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsRouteCell.swift; sourceTree = ""; }; - 46ACF0062490F52500FAAD43 /* LocationCoordinateCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LocationCoordinateCell.xib; sourceTree = ""; }; - 46ACF0072490F52500FAAD43 /* LocationCoordinateCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationCoordinateCell.swift; sourceTree = ""; }; - 46ACF0092490F52500FAAD43 /* LocationAddressCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationAddressCell.swift; sourceTree = ""; }; - 46ACF00A2490F52500FAAD43 /* LocationAddressCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LocationAddressCell.xib; sourceTree = ""; }; - 46ACF00C2490F52500FAAD43 /* LocationCollectionsButtonCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LocationCollectionsButtonCell.xib; sourceTree = ""; }; - 46ACF00D2490F52500FAAD43 /* LocationCollectionsButtonCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationCollectionsButtonCell.swift; sourceTree = ""; }; - 46ACF00F2490F52500FAAD43 /* LocationButtonCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LocationButtonCell.xib; sourceTree = ""; }; - 46ACF0102490F52500FAAD43 /* LocationButtonCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationButtonCell.swift; sourceTree = ""; }; - 46ACF0122490F52500FAAD43 /* LocationTextCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LocationTextCell.xib; sourceTree = ""; }; - 46ACF0132490F52500FAAD43 /* LocationTextCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationTextCell.swift; sourceTree = ""; }; - 46ACF0162490F52600FAAD43 /* MapsSearchCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsSearchCell.xib; sourceTree = ""; }; - 46ACF0172490F52600FAAD43 /* MapsSearchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsSearchCell.swift; sourceTree = ""; }; - 46ACF01A2490F52600FAAD43 /* MapsMenuSpaceCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsMenuSpaceCell.swift; sourceTree = ""; }; - 46ACF01B2490F52600FAAD43 /* MapsMenuSpaceCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsMenuSpaceCell.xib; sourceTree = ""; }; - 46ACF01D2490F52600FAAD43 /* MapsMenuSegmentCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsMenuSegmentCell.swift; sourceTree = ""; }; - 46ACF01E2490F52600FAAD43 /* MapsMenuSegmentCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsMenuSegmentCell.xib; sourceTree = ""; }; - 46ACF0202490F52600FAAD43 /* MapsMenuTextCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsMenuTextCell.xib; sourceTree = ""; }; - 46ACF0212490F52600FAAD43 /* MapsMenuTextCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsMenuTextCell.swift; sourceTree = ""; }; - 46ACF0252490F52600FAAD43 /* HeaderDetailsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeaderDetailsView.swift; sourceTree = ""; }; - 46ACF0262490F52600FAAD43 /* HeaderDetailsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HeaderDetailsView.xib; sourceTree = ""; }; - 46ACF0282490F52600FAAD43 /* HeaderSearchBarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeaderSearchBarView.swift; sourceTree = ""; }; - 46ACF0292490F52600FAAD43 /* HeaderSearchBarView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HeaderSearchBarView.xib; sourceTree = ""; }; - 46ACF02C2490F52600FAAD43 /* TableHeaderSpinerView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TableHeaderSpinerView.xib; sourceTree = ""; }; - 46ACF02D2490F52600FAAD43 /* TableHeaderSpinerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableHeaderSpinerView.swift; sourceTree = ""; }; - 46ACF02F2490F52600FAAD43 /* HeaderTabBarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeaderTabBarView.swift; sourceTree = ""; }; - 46ACF0302490F52600FAAD43 /* HeaderTabBarView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HeaderTabBarView.xib; sourceTree = ""; }; - 46ACF0332490F52600FAAD43 /* MapsMenuHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsMenuHeader.swift; sourceTree = ""; }; - 46ACF0342490F52600FAAD43 /* MapsMenuHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsMenuHeader.xib; sourceTree = ""; }; - 46ACF0372490F52600FAAD43 /* MapsButtons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsButtons.swift; sourceTree = ""; }; - 46ACF0382490F52600FAAD43 /* MapsButtons.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsButtons.xib; sourceTree = ""; }; - 46ACF03A2490F52600FAAD43 /* MapsWeatherView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsWeatherView.xib; sourceTree = ""; }; - 46ACF03B2490F52600FAAD43 /* MapsWeatherView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsWeatherView.swift; sourceTree = ""; }; - 46ACF03C2490F52600FAAD43 /* MapsViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = MapsViewController.storyboard; sourceTree = ""; }; - 46ACF03F2490F52600FAAD43 /* MapsRouteContainerLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsRouteContainerLayout.swift; sourceTree = ""; }; - 46ACF0402490F52600FAAD43 /* MapsMenuContainerLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsMenuContainerLayout.swift; sourceTree = ""; }; - 46ACF0412490F52600FAAD43 /* MapsMainContainerLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsMainContainerLayout.swift; sourceTree = ""; }; - 46ACF0422490F52600FAAD43 /* MapsContainerLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsContainerLayout.swift; sourceTree = ""; }; - 46ACF0452490F52600FAAD43 /* MapsContainerControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsContainerControllerDelegate.swift; sourceTree = ""; }; - 46ACF0462490F52600FAAD43 /* MapsContainerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsContainerController.swift; sourceTree = ""; }; - 46ACF0482490F52600FAAD43 /* RouteContainerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RouteContainerController.swift; sourceTree = ""; }; - 46ACF0492490F52600FAAD43 /* RouteContainerControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RouteContainerControllerDelegate.swift; sourceTree = ""; }; - 46ACF04B2490F52600FAAD43 /* LocationContainerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationContainerController.swift; sourceTree = ""; }; - 46ACF04C2490F52600FAAD43 /* LocationContainerControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationContainerControllerDelegate.swift; sourceTree = ""; }; - 46ACF04E2490F52600FAAD43 /* MenuContainerControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuContainerControllerDelegate.swift; sourceTree = ""; }; - 46ACF04F2490F52600FAAD43 /* MenuContainerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuContainerController.swift; sourceTree = ""; }; - 46ACF0512490F52600FAAD43 /* MapViewManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapViewManager.swift; sourceTree = ""; }; - 46ACF0522490F52600FAAD43 /* MapsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsViewController.swift; sourceTree = ""; }; - 46ACF09D2490FE2700FAAD43 /* SceneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - 46ACF0A32490FEB200FAAD43 /* ExampleCollectionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleCollectionCell.swift; sourceTree = ""; }; - 46ACF0A42490FEB200FAAD43 /* ExampleCollectionCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExampleCollectionCell.xib; sourceTree = ""; }; - 46ACF0A62490FEB200FAAD43 /* ExampleCellStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleCellStyle.swift; sourceTree = ""; }; - 46ACF0A72490FEB200FAAD43 /* ExampleCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleCell.swift; sourceTree = ""; }; - 46ACF0A92490FEB200FAAD43 /* ExampleSegmentCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleSegmentCell.swift; sourceTree = ""; }; - 46ACF0AA2490FEB200FAAD43 /* ExampleSegmentCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExampleSegmentCell.xib; sourceTree = ""; }; - 46ACF0AC2490FEB200FAAD43 /* ExampleSwitchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleSwitchCell.swift; sourceTree = ""; }; - 46ACF0AD2490FEB200FAAD43 /* ExampleSwitchCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExampleSwitchCell.xib; sourceTree = ""; }; - 46ACF0AF2490FEB200FAAD43 /* TitleTextCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TitleTextCell.xib; sourceTree = ""; }; - 46ACF0B02490FEB200FAAD43 /* TitleTextCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TitleTextCell.swift; sourceTree = ""; }; - 46ACF0B22490FEB200FAAD43 /* ExampleSliderCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleSliderCell.swift; sourceTree = ""; }; - 46ACF0B32490FEB200FAAD43 /* ExampleSliderCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExampleSliderCell.xib; sourceTree = ""; }; - 46ACF0B62490FEB200FAAD43 /* ExampleFooterButtonView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleFooterButtonView.swift; sourceTree = ""; }; - 46ACF0B72490FEB300FAAD43 /* ExampleFooterButtonView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExampleFooterButtonView.xib; sourceTree = ""; }; - 46ACF0B92490FEB300FAAD43 /* headerShadow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = headerShadow.png; sourceTree = ""; }; - 46ACF0BA2490FEB300FAAD43 /* ExampleHeaderGripView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleHeaderGripView.swift; sourceTree = ""; }; - 46ACF0BB2490FEB300FAAD43 /* ExampleHeaderGripView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExampleHeaderGripView.xib; sourceTree = ""; }; - 46ACF0BC2490FEB300FAAD43 /* ExamplesSettingsViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ExamplesSettingsViewController.storyboard; sourceTree = ""; }; - 46ACF0BE2490FEB300FAAD43 /* ExamplesContainerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExamplesContainerController.swift; sourceTree = ""; }; - 46ACF0BF2490FEB300FAAD43 /* ExamplesContainerControllerScrollType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExamplesContainerControllerScrollType.swift; sourceTree = ""; }; - 46ACF0C02490FEB300FAAD43 /* ExamplesScrollViews.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExamplesScrollViews.swift; sourceTree = ""; }; - 46ACF0C12490FEB300FAAD43 /* ExamplesSettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExamplesSettingsViewController.swift; sourceTree = ""; }; - 46ACF0D82491A75300FAAD43 /* screenLandscape5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = screenLandscape5.png; sourceTree = ""; }; - 46ACF0E1249255ED00FAAD43 /* ExampleAddCollectionViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ExampleAddCollectionViewController.storyboard; sourceTree = ""; }; - 46ACF0E2249255ED00FAAD43 /* ExampleAddCollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleAddCollectionViewController.swift; sourceTree = ""; }; - 46ACF0E524925B9200FAAD43 /* ExampleAddTableViewControllerSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleAddTableViewControllerSettings.swift; sourceTree = ""; }; - 46ACF0E624925B9200FAAD43 /* ExampleAddTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleAddTableViewController.swift; sourceTree = ""; }; - 46ACF0E724925B9200FAAD43 /* ExampleAddTableViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ExampleAddTableViewController.storyboard; sourceTree = ""; }; - 607FACD01AFB9204008FA782 /* ContainerController.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ContainerController.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 607FACD71AFB9204008FA782 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - 607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 84550121AB9630F101ECE515 /* Pods-ContainerControllerSwift_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ContainerControllerSwift_Example.release.xcconfig"; path = "Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.release.xcconfig"; sourceTree = ""; }; - 95BE06AF27887E1C134436AD /* ContainerControllerSwift.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = ContainerControllerSwift.podspec; path = ../ContainerControllerSwift.podspec; sourceTree = ""; }; - D8903A29B31F63B5A7A8607B /* Pods_ContainerControllerSwift_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ContainerControllerSwift_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DF5E269035BE15FBD5F947F3 /* Pods-ContainerControllerSwift_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ContainerControllerSwift_Tests.release.xcconfig"; path = "Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.release.xcconfig"; sourceTree = ""; }; - E0FB46D7C5BC0F8759A83A60 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 607FACCD1AFB9204008FA782 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 968DB7E5EF2DD4AE15D171EB /* Pods_ContainerControllerSwift_Example.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 22F538CF8601A849D034CF8B /* Pods */ = { - isa = PBXGroup; - children = ( - 0AA8BF39B9F182FE833C0178 /* Pods-ContainerControllerSwift_Example.debug.xcconfig */, - 84550121AB9630F101ECE515 /* Pods-ContainerControllerSwift_Example.release.xcconfig */, - 01C7EF19A8C89AA4D02D74D2 /* Pods-ContainerControllerSwift_Tests.debug.xcconfig */, - DF5E269035BE15FBD5F947F3 /* Pods-ContainerControllerSwift_Tests.release.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; - 46ACEFD32490F52500FAAD43 /* ExamplesAddTableView */ = { - isa = PBXGroup; - children = ( - 46ACF0E624925B9200FAAD43 /* ExampleAddTableViewController.swift */, - 46ACF0E524925B9200FAAD43 /* ExampleAddTableViewControllerSettings.swift */, - 46ACF0E724925B9200FAAD43 /* ExampleAddTableViewController.storyboard */, - ); - path = ExamplesAddTableView; - sourceTree = ""; - }; - 46ACEFD62490F52500FAAD43 /* Framework */ = { - isa = PBXGroup; - children = ( - 46ACEFD72490F52500FAAD43 /* Utils */, - 46ACEFDA2490F52500FAAD43 /* LoadNib */, - 46ACEFDF2490F52500FAAD43 /* DesignableViews */, - ); - path = Framework; - sourceTree = ""; - }; - 46ACEFD72490F52500FAAD43 /* Utils */ = { - isa = PBXGroup; - children = ( - 46ACEFD82490F52500FAAD43 /* Color.swift */, - 46ACEFD92490F52500FAAD43 /* UIView+Positioning.swift */, - ); - path = Utils; - sourceTree = ""; - }; - 46ACEFDA2490F52500FAAD43 /* LoadNib */ = { - isa = PBXGroup; - children = ( - 46ACEFDC2490F52500FAAD43 /* StoryboardController.swift */, - 46ACEFDE2490F52500FAAD43 /* XibView.swift */, - ); - path = LoadNib; - sourceTree = ""; - }; - 46ACEFDF2490F52500FAAD43 /* DesignableViews */ = { - isa = PBXGroup; - children = ( - 46ACEFE02490F52500FAAD43 /* DesignButton.swift */, - 46ACEFE12490F52500FAAD43 /* DesignView.swift */, - ); - path = DesignableViews; - sourceTree = ""; - }; - 46ACEFE22490F52500FAAD43 /* Localization */ = { - isa = PBXGroup; - children = ( - 46ACEFE32490F52500FAAD43 /* Localizable.strings */, - 46ACEFE52490F52500FAAD43 /* InfoPlist.strings */, - 46ACEFE72490F52500FAAD43 /* LocalizationManager.swift */, - 46ACEFEA2490F52500FAAD43 /* LocalizeFuncs.swift */, - ); - path = Localization; - sourceTree = ""; - }; - 46ACEFEB2490F52500FAAD43 /* Maps */ = { - isa = PBXGroup; - children = ( - 46ACEFEC2490F52500FAAD43 /* UI */, - 46ACF03D2490F52600FAAD43 /* Container */, - 46ACF0502490F52600FAAD43 /* MapManager */, - 46ACF0522490F52600FAAD43 /* MapsViewController.swift */, - 46ACF03C2490F52600FAAD43 /* MapsViewController.storyboard */, - ); - path = Maps; - sourceTree = ""; - }; - 46ACEFEC2490F52500FAAD43 /* UI */ = { - isa = PBXGroup; - children = ( - 46ACEFED2490F52500FAAD43 /* CollectionCell */, - 46ACEFF12490F52500FAAD43 /* Cell */, - 46ACF0222490F52600FAAD43 /* View */, - ); - path = UI; - sourceTree = ""; - }; - 46ACEFED2490F52500FAAD43 /* CollectionCell */ = { - isa = PBXGroup; - children = ( - 46ACEFEE2490F52500FAAD43 /* MapsFavoriteCell */, - ); - path = CollectionCell; - sourceTree = ""; - }; - 46ACEFEE2490F52500FAAD43 /* MapsFavoriteCell */ = { - isa = PBXGroup; - children = ( - 46ACEFEF2490F52500FAAD43 /* MapsFavoriteCell.swift */, - 46ACEFF02490F52500FAAD43 /* MapsFavoriteCell.xib */, - ); - path = MapsFavoriteCell; - sourceTree = ""; - }; - 46ACEFF12490F52500FAAD43 /* Cell */ = { - isa = PBXGroup; - children = ( - 46ACEFF22490F52500FAAD43 /* Maps */, - 46ACF0002490F52500FAAD43 /* Route */, - 46ACF0042490F52500FAAD43 /* LocationDetails */, - 46ACF0142490F52500FAAD43 /* Search */, - 46ACF0182490F52600FAAD43 /* Menu */, - ); - path = Cell; - sourceTree = ""; - }; - 46ACEFF22490F52500FAAD43 /* Maps */ = { - isa = PBXGroup; - children = ( - 46ACEFF32490F52500FAAD43 /* MapsFavoritesCell */, - 46ACEFF62490F52500FAAD43 /* MapsCollectionsCell */, - 46ACEFFA2490F52500FAAD43 /* MapsLocationCell */, - 46ACEFFD2490F52500FAAD43 /* MapsSectionCell */, - ); - path = Maps; - sourceTree = ""; - }; - 46ACEFF32490F52500FAAD43 /* MapsFavoritesCell */ = { - isa = PBXGroup; - children = ( - 46ACEFF52490F52500FAAD43 /* MapsFavoritesCell.swift */, - 46ACEFF42490F52500FAAD43 /* MapsFavoritesCell.xib */, - ); - path = MapsFavoritesCell; - sourceTree = ""; - }; - 46ACEFF62490F52500FAAD43 /* MapsCollectionsCell */ = { - isa = PBXGroup; - children = ( - 46ACEFF72490F52500FAAD43 /* MapsCollectionCellView.swift */, - 46ACEFF92490F52500FAAD43 /* MapsCollectionsCell.swift */, - 46ACEFF82490F52500FAAD43 /* MapsCollectionsCell.xib */, - ); - path = MapsCollectionsCell; - sourceTree = ""; - }; - 46ACEFFA2490F52500FAAD43 /* MapsLocationCell */ = { - isa = PBXGroup; - children = ( - 46ACEFFC2490F52500FAAD43 /* MapsLocationCell.swift */, - 46ACEFFB2490F52500FAAD43 /* MapsLocationCell.xib */, - ); - path = MapsLocationCell; - sourceTree = ""; - }; - 46ACEFFD2490F52500FAAD43 /* MapsSectionCell */ = { - isa = PBXGroup; - children = ( - 46ACEFFF2490F52500FAAD43 /* MapsSectionCell.swift */, - 46ACEFFE2490F52500FAAD43 /* MapsSectionCell.xib */, - ); - path = MapsSectionCell; - sourceTree = ""; - }; - 46ACF0002490F52500FAAD43 /* Route */ = { - isa = PBXGroup; - children = ( - 46ACF0012490F52500FAAD43 /* MapsRouteCell */, - ); - path = Route; - sourceTree = ""; - }; - 46ACF0012490F52500FAAD43 /* MapsRouteCell */ = { - isa = PBXGroup; - children = ( - 46ACF0032490F52500FAAD43 /* MapsRouteCell.swift */, - 46ACF0022490F52500FAAD43 /* MapsRouteCell.xib */, - ); - path = MapsRouteCell; - sourceTree = ""; - }; - 46ACF0042490F52500FAAD43 /* LocationDetails */ = { - isa = PBXGroup; - children = ( - 46ACF0052490F52500FAAD43 /* LocationCoordinateCell */, - 46ACF0082490F52500FAAD43 /* LocationAddressCell */, - 46ACF00B2490F52500FAAD43 /* LocationCollectionsButtonCell */, - 46ACF00E2490F52500FAAD43 /* LocationButtonCell */, - 46ACF0112490F52500FAAD43 /* LocationTextCell */, - ); - path = LocationDetails; - sourceTree = ""; - }; - 46ACF0052490F52500FAAD43 /* LocationCoordinateCell */ = { - isa = PBXGroup; - children = ( - 46ACF0072490F52500FAAD43 /* LocationCoordinateCell.swift */, - 46ACF0062490F52500FAAD43 /* LocationCoordinateCell.xib */, - ); - path = LocationCoordinateCell; - sourceTree = ""; - }; - 46ACF0082490F52500FAAD43 /* LocationAddressCell */ = { - isa = PBXGroup; - children = ( - 46ACF0092490F52500FAAD43 /* LocationAddressCell.swift */, - 46ACF00A2490F52500FAAD43 /* LocationAddressCell.xib */, - ); - path = LocationAddressCell; - sourceTree = ""; - }; - 46ACF00B2490F52500FAAD43 /* LocationCollectionsButtonCell */ = { - isa = PBXGroup; - children = ( - 46ACF00D2490F52500FAAD43 /* LocationCollectionsButtonCell.swift */, - 46ACF00C2490F52500FAAD43 /* LocationCollectionsButtonCell.xib */, - ); - path = LocationCollectionsButtonCell; - sourceTree = ""; - }; - 46ACF00E2490F52500FAAD43 /* LocationButtonCell */ = { - isa = PBXGroup; - children = ( - 46ACF0102490F52500FAAD43 /* LocationButtonCell.swift */, - 46ACF00F2490F52500FAAD43 /* LocationButtonCell.xib */, - ); - path = LocationButtonCell; - sourceTree = ""; - }; - 46ACF0112490F52500FAAD43 /* LocationTextCell */ = { - isa = PBXGroup; - children = ( - 46ACF0132490F52500FAAD43 /* LocationTextCell.swift */, - 46ACF0122490F52500FAAD43 /* LocationTextCell.xib */, - ); - path = LocationTextCell; - sourceTree = ""; - }; - 46ACF0142490F52500FAAD43 /* Search */ = { - isa = PBXGroup; - children = ( - 46ACF0152490F52600FAAD43 /* MapsSearchCell */, - ); - path = Search; - sourceTree = ""; - }; - 46ACF0152490F52600FAAD43 /* MapsSearchCell */ = { - isa = PBXGroup; - children = ( - 46ACF0172490F52600FAAD43 /* MapsSearchCell.swift */, - 46ACF0162490F52600FAAD43 /* MapsSearchCell.xib */, - ); - path = MapsSearchCell; - sourceTree = ""; - }; - 46ACF0182490F52600FAAD43 /* Menu */ = { - isa = PBXGroup; - children = ( - 46ACF0192490F52600FAAD43 /* MapsMenuSpaceCell */, - 46ACF01C2490F52600FAAD43 /* MapsMenuSegmentCell */, - 46ACF01F2490F52600FAAD43 /* MapsMenuTextCell */, - ); - path = Menu; - sourceTree = ""; - }; - 46ACF0192490F52600FAAD43 /* MapsMenuSpaceCell */ = { - isa = PBXGroup; - children = ( - 46ACF01A2490F52600FAAD43 /* MapsMenuSpaceCell.swift */, - 46ACF01B2490F52600FAAD43 /* MapsMenuSpaceCell.xib */, - ); - path = MapsMenuSpaceCell; - sourceTree = ""; - }; - 46ACF01C2490F52600FAAD43 /* MapsMenuSegmentCell */ = { - isa = PBXGroup; - children = ( - 46ACF01D2490F52600FAAD43 /* MapsMenuSegmentCell.swift */, - 46ACF01E2490F52600FAAD43 /* MapsMenuSegmentCell.xib */, - ); - path = MapsMenuSegmentCell; - sourceTree = ""; - }; - 46ACF01F2490F52600FAAD43 /* MapsMenuTextCell */ = { - isa = PBXGroup; - children = ( - 46ACF0212490F52600FAAD43 /* MapsMenuTextCell.swift */, - 46ACF0202490F52600FAAD43 /* MapsMenuTextCell.xib */, - ); - path = MapsMenuTextCell; - sourceTree = ""; - }; - 46ACF0222490F52600FAAD43 /* View */ = { - isa = PBXGroup; - children = ( - 46ACF0232490F52600FAAD43 /* Maps */, - 46ACF02A2490F52600FAAD43 /* Route */, - 46ACF0312490F52600FAAD43 /* Menu */, - 46ACF0352490F52600FAAD43 /* Main */, - ); - path = View; - sourceTree = ""; - }; - 46ACF0232490F52600FAAD43 /* Maps */ = { - isa = PBXGroup; - children = ( - 46ACF0242490F52600FAAD43 /* HeaderDetailsView */, - 46ACF0272490F52600FAAD43 /* HeaderSearchBarView */, - ); - path = Maps; - sourceTree = ""; - }; - 46ACF0242490F52600FAAD43 /* HeaderDetailsView */ = { - isa = PBXGroup; - children = ( - 46ACF0252490F52600FAAD43 /* HeaderDetailsView.swift */, - 46ACF0262490F52600FAAD43 /* HeaderDetailsView.xib */, - ); - path = HeaderDetailsView; - sourceTree = ""; - }; - 46ACF0272490F52600FAAD43 /* HeaderSearchBarView */ = { - isa = PBXGroup; - children = ( - 46ACF0282490F52600FAAD43 /* HeaderSearchBarView.swift */, - 46ACF0292490F52600FAAD43 /* HeaderSearchBarView.xib */, - ); - path = HeaderSearchBarView; - sourceTree = ""; - }; - 46ACF02A2490F52600FAAD43 /* Route */ = { - isa = PBXGroup; - children = ( - 46ACF02B2490F52600FAAD43 /* TableHeaderSpinerView */, - 46ACF02E2490F52600FAAD43 /* HeaderTabBarView */, - ); - path = Route; - sourceTree = ""; - }; - 46ACF02B2490F52600FAAD43 /* TableHeaderSpinerView */ = { - isa = PBXGroup; - children = ( - 46ACF02D2490F52600FAAD43 /* TableHeaderSpinerView.swift */, - 46ACF02C2490F52600FAAD43 /* TableHeaderSpinerView.xib */, - ); - path = TableHeaderSpinerView; - sourceTree = ""; - }; - 46ACF02E2490F52600FAAD43 /* HeaderTabBarView */ = { - isa = PBXGroup; - children = ( - 46ACF02F2490F52600FAAD43 /* HeaderTabBarView.swift */, - 46ACF0302490F52600FAAD43 /* HeaderTabBarView.xib */, - ); - path = HeaderTabBarView; - sourceTree = ""; - }; - 46ACF0312490F52600FAAD43 /* Menu */ = { - isa = PBXGroup; - children = ( - 46ACF0322490F52600FAAD43 /* MapsMenuHeader */, - ); - path = Menu; - sourceTree = ""; - }; - 46ACF0322490F52600FAAD43 /* MapsMenuHeader */ = { - isa = PBXGroup; - children = ( - 46ACF0332490F52600FAAD43 /* MapsMenuHeader.swift */, - 46ACF0342490F52600FAAD43 /* MapsMenuHeader.xib */, - ); - path = MapsMenuHeader; - sourceTree = ""; - }; - 46ACF0352490F52600FAAD43 /* Main */ = { - isa = PBXGroup; - children = ( - 46ACF0362490F52600FAAD43 /* MapsButtons */, - 46ACF0392490F52600FAAD43 /* MapsWeatherView */, - ); - path = Main; - sourceTree = ""; - }; - 46ACF0362490F52600FAAD43 /* MapsButtons */ = { - isa = PBXGroup; - children = ( - 46ACF0372490F52600FAAD43 /* MapsButtons.swift */, - 46ACF0382490F52600FAAD43 /* MapsButtons.xib */, - ); - path = MapsButtons; - sourceTree = ""; - }; - 46ACF0392490F52600FAAD43 /* MapsWeatherView */ = { - isa = PBXGroup; - children = ( - 46ACF03B2490F52600FAAD43 /* MapsWeatherView.swift */, - 46ACF03A2490F52600FAAD43 /* MapsWeatherView.xib */, - ); - path = MapsWeatherView; - sourceTree = ""; - }; - 46ACF03D2490F52600FAAD43 /* Container */ = { - isa = PBXGroup; - children = ( - 46ACF03E2490F52600FAAD43 /* Layout */, - 46ACF0432490F52600FAAD43 /* Controller */, - ); - path = Container; - sourceTree = ""; - }; - 46ACF03E2490F52600FAAD43 /* Layout */ = { - isa = PBXGroup; - children = ( - 46ACF03F2490F52600FAAD43 /* MapsRouteContainerLayout.swift */, - 46ACF0402490F52600FAAD43 /* MapsMenuContainerLayout.swift */, - 46ACF0412490F52600FAAD43 /* MapsMainContainerLayout.swift */, - 46ACF0422490F52600FAAD43 /* MapsContainerLayout.swift */, - ); - path = Layout; - sourceTree = ""; - }; - 46ACF0432490F52600FAAD43 /* Controller */ = { - isa = PBXGroup; - children = ( - 46ACF0442490F52600FAAD43 /* Maps */, - 46ACF0472490F52600FAAD43 /* Route */, - 46ACF04A2490F52600FAAD43 /* LocationDetails */, - 46ACF04D2490F52600FAAD43 /* Menu */, - ); - path = Controller; - sourceTree = ""; - }; - 46ACF0442490F52600FAAD43 /* Maps */ = { - isa = PBXGroup; - children = ( - 46ACF0452490F52600FAAD43 /* MapsContainerControllerDelegate.swift */, - 46ACF0462490F52600FAAD43 /* MapsContainerController.swift */, - ); - path = Maps; - sourceTree = ""; - }; - 46ACF0472490F52600FAAD43 /* Route */ = { - isa = PBXGroup; - children = ( - 46ACF0482490F52600FAAD43 /* RouteContainerController.swift */, - 46ACF0492490F52600FAAD43 /* RouteContainerControllerDelegate.swift */, - ); - path = Route; - sourceTree = ""; - }; - 46ACF04A2490F52600FAAD43 /* LocationDetails */ = { - isa = PBXGroup; - children = ( - 46ACF04B2490F52600FAAD43 /* LocationContainerController.swift */, - 46ACF04C2490F52600FAAD43 /* LocationContainerControllerDelegate.swift */, - ); - path = LocationDetails; - sourceTree = ""; - }; - 46ACF04D2490F52600FAAD43 /* Menu */ = { - isa = PBXGroup; - children = ( - 46ACF04E2490F52600FAAD43 /* MenuContainerControllerDelegate.swift */, - 46ACF04F2490F52600FAAD43 /* MenuContainerController.swift */, - ); - path = Menu; - sourceTree = ""; - }; - 46ACF0502490F52600FAAD43 /* MapManager */ = { - isa = PBXGroup; - children = ( - 46ACF0512490F52600FAAD43 /* MapViewManager.swift */, - ); - path = MapManager; - sourceTree = ""; - }; - 46ACF09F2490FEB200FAAD43 /* ExamplesSettings */ = { - isa = PBXGroup; - children = ( - 46ACF0A02490FEB200FAAD43 /* UI */, - 46ACF0BD2490FEB300FAAD43 /* Container */, - 46ACF0C12490FEB300FAAD43 /* ExamplesSettingsViewController.swift */, - 46ACF0BC2490FEB300FAAD43 /* ExamplesSettingsViewController.storyboard */, - ); - path = ExamplesSettings; - sourceTree = ""; - }; - 46ACF0A02490FEB200FAAD43 /* UI */ = { - isa = PBXGroup; - children = ( - 46ACF0A12490FEB200FAAD43 /* CollectionCell */, - 46ACF0A52490FEB200FAAD43 /* Cell */, - 46ACF0B42490FEB200FAAD43 /* View */, - ); - path = UI; - sourceTree = ""; - }; - 46ACF0A12490FEB200FAAD43 /* CollectionCell */ = { - isa = PBXGroup; - children = ( - 46ACF0A22490FEB200FAAD43 /* ExampleCollectionCell */, - ); - path = CollectionCell; - sourceTree = ""; - }; - 46ACF0A22490FEB200FAAD43 /* ExampleCollectionCell */ = { - isa = PBXGroup; - children = ( - 46ACF0A32490FEB200FAAD43 /* ExampleCollectionCell.swift */, - 46ACF0A42490FEB200FAAD43 /* ExampleCollectionCell.xib */, - ); - path = ExampleCollectionCell; - sourceTree = ""; - }; - 46ACF0A52490FEB200FAAD43 /* Cell */ = { - isa = PBXGroup; - children = ( - 46ACF0A62490FEB200FAAD43 /* ExampleCellStyle.swift */, - 46ACF0A72490FEB200FAAD43 /* ExampleCell.swift */, - 46ACF0A82490FEB200FAAD43 /* ExampleSegmentCell */, - 46ACF0AB2490FEB200FAAD43 /* ExampleSwitchCell */, - 46ACF0AE2490FEB200FAAD43 /* TitleTextCell */, - 46ACF0B12490FEB200FAAD43 /* ExampleSliderCell */, - ); - path = Cell; - sourceTree = ""; - }; - 46ACF0A82490FEB200FAAD43 /* ExampleSegmentCell */ = { - isa = PBXGroup; - children = ( - 46ACF0A92490FEB200FAAD43 /* ExampleSegmentCell.swift */, - 46ACF0AA2490FEB200FAAD43 /* ExampleSegmentCell.xib */, - ); - path = ExampleSegmentCell; - sourceTree = ""; - }; - 46ACF0AB2490FEB200FAAD43 /* ExampleSwitchCell */ = { - isa = PBXGroup; - children = ( - 46ACF0AC2490FEB200FAAD43 /* ExampleSwitchCell.swift */, - 46ACF0AD2490FEB200FAAD43 /* ExampleSwitchCell.xib */, - ); - path = ExampleSwitchCell; - sourceTree = ""; - }; - 46ACF0AE2490FEB200FAAD43 /* TitleTextCell */ = { - isa = PBXGroup; - children = ( - 46ACF0B02490FEB200FAAD43 /* TitleTextCell.swift */, - 46ACF0AF2490FEB200FAAD43 /* TitleTextCell.xib */, - ); - path = TitleTextCell; - sourceTree = ""; - }; - 46ACF0B12490FEB200FAAD43 /* ExampleSliderCell */ = { - isa = PBXGroup; - children = ( - 46ACF0B22490FEB200FAAD43 /* ExampleSliderCell.swift */, - 46ACF0B32490FEB200FAAD43 /* ExampleSliderCell.xib */, - ); - path = ExampleSliderCell; - sourceTree = ""; - }; - 46ACF0B42490FEB200FAAD43 /* View */ = { - isa = PBXGroup; - children = ( - 46ACF0B52490FEB200FAAD43 /* ExampleFooterButtonView */, - 46ACF0B82490FEB300FAAD43 /* ExampleHeaderGripView */, - ); - path = View; - sourceTree = ""; - }; - 46ACF0B52490FEB200FAAD43 /* ExampleFooterButtonView */ = { - isa = PBXGroup; - children = ( - 46ACF0B62490FEB200FAAD43 /* ExampleFooterButtonView.swift */, - 46ACF0B72490FEB300FAAD43 /* ExampleFooterButtonView.xib */, - ); - path = ExampleFooterButtonView; - sourceTree = ""; - }; - 46ACF0B82490FEB300FAAD43 /* ExampleHeaderGripView */ = { - isa = PBXGroup; - children = ( - 46ACF0B92490FEB300FAAD43 /* headerShadow.png */, - 46ACF0BA2490FEB300FAAD43 /* ExampleHeaderGripView.swift */, - 46ACF0BB2490FEB300FAAD43 /* ExampleHeaderGripView.xib */, - ); - path = ExampleHeaderGripView; - sourceTree = ""; - }; - 46ACF0BD2490FEB300FAAD43 /* Container */ = { - isa = PBXGroup; - children = ( - 46ACF0BE2490FEB300FAAD43 /* ExamplesContainerController.swift */, - 46ACF0BF2490FEB300FAAD43 /* ExamplesContainerControllerScrollType.swift */, - 46ACF0C02490FEB300FAAD43 /* ExamplesScrollViews.swift */, - ); - path = Container; - sourceTree = ""; - }; - 46ACF0DA2492297100FAAD43 /* ExampleAddCollectionView */ = { - isa = PBXGroup; - children = ( - 46ACF0E2249255ED00FAAD43 /* ExampleAddCollectionViewController.swift */, - 46ACF0E1249255ED00FAAD43 /* ExampleAddCollectionViewController.storyboard */, - ); - path = ExampleAddCollectionView; - sourceTree = ""; - }; - 607FACC71AFB9204008FA782 = { - isa = PBXGroup; - children = ( - 607FACF51AFB993E008FA782 /* Podspec */, - 607FACD21AFB9204008FA782 /* Example */, - 607FACD11AFB9204008FA782 /* Products */, - 22F538CF8601A849D034CF8B /* Pods */, - AD5BB6CA5AB2437952B3E0A8 /* Frameworks */, - ); - sourceTree = ""; - }; - 607FACD11AFB9204008FA782 /* Products */ = { - isa = PBXGroup; - children = ( - 607FACD01AFB9204008FA782 /* ContainerController.app */, - ); - name = Products; - sourceTree = ""; - }; - 607FACD21AFB9204008FA782 /* Example */ = { - isa = PBXGroup; - children = ( - 46ACEFD62490F52500FAAD43 /* Framework */, - 46ACEFE22490F52500FAAD43 /* Localization */, - 46ACEFEB2490F52500FAAD43 /* Maps */, - 46ACF09F2490FEB200FAAD43 /* ExamplesSettings */, - 46ACF0DA2492297100FAAD43 /* ExampleAddCollectionView */, - 46ACEFD32490F52500FAAD43 /* ExamplesAddTableView */, - 607FACD51AFB9204008FA782 /* AppDelegate.swift */, - 46ACF09D2490FE2700FAAD43 /* SceneDelegate.swift */, - 607FACD71AFB9204008FA782 /* ViewController.swift */, - 607FACD91AFB9204008FA782 /* Main.storyboard */, - 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, - 607FACDC1AFB9204008FA782 /* Images.xcassets */, - 607FACD31AFB9204008FA782 /* Supporting Files */, - ); - name = Example; - path = ContainerControllerSwift; - sourceTree = ""; - }; - 607FACD31AFB9204008FA782 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 46ACF0D82491A75300FAAD43 /* screenLandscape5.png */, - 607FACD41AFB9204008FA782 /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 607FACF51AFB993E008FA782 /* Podspec */ = { - isa = PBXGroup; - children = ( - 95BE06AF27887E1C134436AD /* ContainerControllerSwift.podspec */, - 1034FE614CC8890CE063531F /* README.md */, - E0FB46D7C5BC0F8759A83A60 /* LICENSE */, - ); - name = Podspec; - sourceTree = ""; - }; - AD5BB6CA5AB2437952B3E0A8 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 121FB933CAE3EC5A2A00F4B2 /* Pods_ContainerControllerSwift_Example.framework */, - D8903A29B31F63B5A7A8607B /* Pods_ContainerControllerSwift_Tests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 607FACCF1AFB9204008FA782 /* ContainerControllerSwift_Example */ = { - isa = PBXNativeTarget; - buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "ContainerControllerSwift_Example" */; - buildPhases = ( - 83D2AA92C153B73649CBCF16 /* [CP] Check Pods Manifest.lock */, - 607FACCC1AFB9204008FA782 /* Sources */, - 607FACCD1AFB9204008FA782 /* Frameworks */, - 607FACCE1AFB9204008FA782 /* Resources */, - 8E6E3C608EFDC3DE4C572F9E /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ContainerControllerSwift_Example; - productName = ContainerControllerSwift; - productReference = 607FACD01AFB9204008FA782 /* ContainerController.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 607FACC81AFB9204008FA782 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 1150; - ORGANIZATIONNAME = CocoaPods; - TargetAttributes = { - 607FACCF1AFB9204008FA782 = { - CreatedOnToolsVersion = 6.3.1; - DevelopmentTeam = Y7546NLJW9; - LastSwiftMigration = 0900; - }; - }; - }; - buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "ContainerControllerSwift" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ru, - ); - mainGroup = 607FACC71AFB9204008FA782; - productRefGroup = 607FACD11AFB9204008FA782 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 607FACCF1AFB9204008FA782 /* ContainerControllerSwift_Example */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 607FACCE1AFB9204008FA782 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 46ACF0CA2490FEB300FAAD43 /* TitleTextCell.xib in Resources */, - 46ACF05B2490F52600FAAD43 /* Localizable.strings in Resources */, - 46ACF0662490F52600FAAD43 /* MapsLocationCell.xib in Resources */, - 46ACF05C2490F52600FAAD43 /* InfoPlist.strings in Resources */, - 46ACF07C2490F52600FAAD43 /* MapsMenuTextCell.xib in Resources */, - 46ACF0C92490FEB300FAAD43 /* ExampleSwitchCell.xib in Resources */, - 46ACF0682490F52600FAAD43 /* MapsSectionCell.xib in Resources */, - 46ACF0612490F52600FAAD43 /* MapsFavoritesCell.xib in Resources */, - 46ACF06C2490F52600FAAD43 /* LocationCoordinateCell.xib in Resources */, - 46ACF0642490F52600FAAD43 /* MapsCollectionsCell.xib in Resources */, - 46ACF0D02490FEB300FAAD43 /* headerShadow.png in Resources */, - 46ACF06A2490F52600FAAD43 /* MapsRouteCell.xib in Resources */, - 46ACF0CD2490FEB300FAAD43 /* ExampleSliderCell.xib in Resources */, - 46ACF0602490F52600FAAD43 /* MapsFavoriteCell.xib in Resources */, - 46ACF0792490F52600FAAD43 /* MapsMenuSpaceCell.xib in Resources */, - 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */, - 46ACF08A2490F52600FAAD43 /* MapsWeatherView.xib in Resources */, - 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, - 46ACF0742490F52600FAAD43 /* LocationTextCell.xib in Resources */, - 46ACF07F2490F52600FAAD43 /* HeaderDetailsView.xib in Resources */, - 46ACF0E3249255ED00FAAD43 /* ExampleAddCollectionViewController.storyboard in Resources */, - 46ACF0812490F52600FAAD43 /* HeaderSearchBarView.xib in Resources */, - 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */, - 46ACF0C32490FEB300FAAD43 /* ExampleCollectionCell.xib in Resources */, - 46ACF0D22490FEB300FAAD43 /* ExampleHeaderGripView.xib in Resources */, - 46ACF0722490F52600FAAD43 /* LocationButtonCell.xib in Resources */, - 46ACF0D32490FEB300FAAD43 /* ExamplesSettingsViewController.storyboard in Resources */, - 46ACF06F2490F52600FAAD43 /* LocationAddressCell.xib in Resources */, - 46ACF0C72490FEB300FAAD43 /* ExampleSegmentCell.xib in Resources */, - 46ACF0CF2490FEB300FAAD43 /* ExampleFooterButtonView.xib in Resources */, - 46ACF0D92491A75300FAAD43 /* screenLandscape5.png in Resources */, - 46ACF0EA24925B9200FAAD43 /* ExampleAddTableViewController.storyboard in Resources */, - 46ACF0872490F52600FAAD43 /* MapsMenuHeader.xib in Resources */, - 46ACF07B2490F52600FAAD43 /* MapsMenuSegmentCell.xib in Resources */, - 46ACF0762490F52600FAAD43 /* MapsSearchCell.xib in Resources */, - 46ACF0852490F52600FAAD43 /* HeaderTabBarView.xib in Resources */, - 46ACF08C2490F52600FAAD43 /* MapsViewController.storyboard in Resources */, - 46ACF0892490F52600FAAD43 /* MapsButtons.xib in Resources */, - 46ACF0702490F52600FAAD43 /* LocationCollectionsButtonCell.xib in Resources */, - 46ACF0822490F52600FAAD43 /* TableHeaderSpinerView.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 83D2AA92C153B73649CBCF16 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ContainerControllerSwift_Example-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 8E6E3C608EFDC3DE4C572F9E /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/ContainerControllerSwift/ContainerControllerSwift.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ContainerControllerSwift.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 607FACCC1AFB9204008FA782 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 46ACF06D2490F52600FAAD43 /* LocationCoordinateCell.swift in Sources */, - 46ACF0D42490FEB300FAAD43 /* ExamplesContainerController.swift in Sources */, - 46ACF0E924925B9200FAAD43 /* ExampleAddTableViewController.swift in Sources */, - 46ACF06B2490F52600FAAD43 /* MapsRouteCell.swift in Sources */, - 46ACF0752490F52600FAAD43 /* LocationTextCell.swift in Sources */, - 46ACF09A2490F52600FAAD43 /* MapsViewController.swift in Sources */, - 46ACF0C82490FEB300FAAD43 /* ExampleSwitchCell.swift in Sources */, - 46ACF0962490F52600FAAD43 /* LocationContainerControllerDelegate.swift in Sources */, - 46ACF08E2490F52600FAAD43 /* MapsMenuContainerLayout.swift in Sources */, - 46ACF07D2490F52600FAAD43 /* MapsMenuTextCell.swift in Sources */, - 46ACF07A2490F52600FAAD43 /* MapsMenuSegmentCell.swift in Sources */, - 46ACF0C52490FEB300FAAD43 /* ExampleCell.swift in Sources */, - 46ACF0C22490FEB300FAAD43 /* ExampleCollectionCell.swift in Sources */, - 46ACF0D72490FEB300FAAD43 /* ExamplesSettingsViewController.swift in Sources */, - 46ACF05D2490F52600FAAD43 /* LocalizationManager.swift in Sources */, - 46ACF0932490F52600FAAD43 /* RouteContainerController.swift in Sources */, - 46ACF0802490F52600FAAD43 /* HeaderSearchBarView.swift in Sources */, - 46ACF0922490F52600FAAD43 /* MapsContainerController.swift in Sources */, - 46ACF0632490F52600FAAD43 /* MapsCollectionCellView.swift in Sources */, - 46ACF0952490F52600FAAD43 /* LocationContainerController.swift in Sources */, - 46ACF0C42490FEB300FAAD43 /* ExampleCellStyle.swift in Sources */, - 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */, - 46ACF08D2490F52600FAAD43 /* MapsRouteContainerLayout.swift in Sources */, - 46ACF0D52490FEB300FAAD43 /* ExamplesContainerControllerScrollType.swift in Sources */, - 46ACF0CB2490FEB300FAAD43 /* TitleTextCell.swift in Sources */, - 46ACF08F2490F52600FAAD43 /* MapsMainContainerLayout.swift in Sources */, - 46ACF0E4249255ED00FAAD43 /* ExampleAddCollectionViewController.swift in Sources */, - 46ACF0772490F52600FAAD43 /* MapsSearchCell.swift in Sources */, - 46ACF05F2490F52600FAAD43 /* MapsFavoriteCell.swift in Sources */, - 46ACF0582490F52600FAAD43 /* XibView.swift in Sources */, - 46ACF0782490F52600FAAD43 /* MapsMenuSpaceCell.swift in Sources */, - 46ACF0972490F52600FAAD43 /* MenuContainerControllerDelegate.swift in Sources */, - 46ACF0E824925B9200FAAD43 /* ExampleAddTableViewControllerSettings.swift in Sources */, - 46ACF0552490F52600FAAD43 /* Color.swift in Sources */, - 46ACF0692490F52600FAAD43 /* MapsSectionCell.swift in Sources */, - 46ACF0882490F52600FAAD43 /* MapsButtons.swift in Sources */, - 46ACF08B2490F52600FAAD43 /* MapsWeatherView.swift in Sources */, - 46ACF0652490F52600FAAD43 /* MapsCollectionsCell.swift in Sources */, - 46ACF0912490F52600FAAD43 /* MapsContainerControllerDelegate.swift in Sources */, - 46ACF0592490F52600FAAD43 /* DesignButton.swift in Sources */, - 46ACF0992490F52600FAAD43 /* MapViewManager.swift in Sources */, - 46ACF06E2490F52600FAAD43 /* LocationAddressCell.swift in Sources */, - 46ACF0572490F52600FAAD43 /* StoryboardController.swift in Sources */, - 46ACF0842490F52600FAAD43 /* HeaderTabBarView.swift in Sources */, - 46ACF0562490F52600FAAD43 /* UIView+Positioning.swift in Sources */, - 46ACF0712490F52600FAAD43 /* LocationCollectionsButtonCell.swift in Sources */, - 46ACF0622490F52600FAAD43 /* MapsFavoritesCell.swift in Sources */, - 46ACF0CC2490FEB300FAAD43 /* ExampleSliderCell.swift in Sources */, - 46ACF09E2490FE2700FAAD43 /* SceneDelegate.swift in Sources */, - 46ACF0C62490FEB300FAAD43 /* ExampleSegmentCell.swift in Sources */, - 46ACF0D12490FEB300FAAD43 /* ExampleHeaderGripView.swift in Sources */, - 46ACF0CE2490FEB300FAAD43 /* ExampleFooterButtonView.swift in Sources */, - 46ACF0732490F52600FAAD43 /* LocationButtonCell.swift in Sources */, - 46ACF0942490F52600FAAD43 /* RouteContainerControllerDelegate.swift in Sources */, - 46ACF0982490F52600FAAD43 /* MenuContainerController.swift in Sources */, - 46ACF0672490F52600FAAD43 /* MapsLocationCell.swift in Sources */, - 46ACF0D62490FEB300FAAD43 /* ExamplesScrollViews.swift in Sources */, - 46ACF07E2490F52600FAAD43 /* HeaderDetailsView.swift in Sources */, - 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, - 46ACF05A2490F52600FAAD43 /* DesignView.swift in Sources */, - 46ACF0902490F52600FAAD43 /* MapsContainerLayout.swift in Sources */, - 46ACF05E2490F52600FAAD43 /* LocalizeFuncs.swift in Sources */, - 46ACF0862490F52600FAAD43 /* MapsMenuHeader.swift in Sources */, - 46ACF0832490F52600FAAD43 /* TableHeaderSpinerView.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 46ACEFE32490F52500FAAD43 /* Localizable.strings */ = { - isa = PBXVariantGroup; - children = ( - 46ACEFE42490F52500FAAD43 /* en */, - 46ACEFE82490F52500FAAD43 /* ru */, - ); - name = Localizable.strings; - sourceTree = ""; - }; - 46ACEFE52490F52500FAAD43 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 46ACEFE62490F52500FAAD43 /* en */, - 46ACEFE92490F52500FAAD43 /* ru */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - 607FACD91AFB9204008FA782 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 607FACDA1AFB9204008FA782 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 607FACDF1AFB9204008FA782 /* Base */, - ); - name = LaunchScreen.xib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 607FACED1AFB9204008FA782 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 607FACEE1AFB9204008FA782 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 5.0; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 607FACF01AFB9204008FA782 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0AA8BF39B9F182FE833C0178 /* Pods-ContainerControllerSwift_Example.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - DEVELOPMENT_TEAM = Y7546NLJW9; - INFOPLIST_FILE = ContainerControllerSwift/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MODULE_NAME = ExampleApp; - PRODUCT_BUNDLE_IDENTIFIER = mrustaa.ContainerController; - PRODUCT_NAME = ContainerController; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 607FACF11AFB9204008FA782 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 84550121AB9630F101ECE515 /* Pods-ContainerControllerSwift_Example.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - DEVELOPMENT_TEAM = Y7546NLJW9; - INFOPLIST_FILE = ContainerControllerSwift/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MODULE_NAME = ExampleApp; - PRODUCT_BUNDLE_IDENTIFIER = mrustaa.ContainerController; - PRODUCT_NAME = ContainerController; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "ContainerControllerSwift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 607FACED1AFB9204008FA782 /* Debug */, - 607FACEE1AFB9204008FA782 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "ContainerControllerSwift_Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 607FACF01AFB9204008FA782 /* Debug */, - 607FACF11AFB9204008FA782 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 607FACC81AFB9204008FA782 /* Project object */; -} diff --git a/Example/ContainerControllerSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/ContainerControllerSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index bbd5530..0000000 --- a/Example/ContainerControllerSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Example/ContainerControllerSwift.xcodeproj/xcshareddata/xcschemes/ContainerControllerSwift-Example.xcscheme b/Example/ContainerControllerSwift.xcodeproj/xcshareddata/xcschemes/ContainerControllerSwift-Example.xcscheme deleted file mode 100644 index 4c5226e..0000000 --- a/Example/ContainerControllerSwift.xcodeproj/xcshareddata/xcschemes/ContainerControllerSwift-Example.xcscheme +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/ContainerControllerSwift.xcworkspace/contents.xcworkspacedata b/Example/ContainerControllerSwift.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 7f1e1bb..0000000 --- a/Example/ContainerControllerSwift.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/Example/ContainerControllerSwift.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/ContainerControllerSwift.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/Example/ContainerControllerSwift.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/Example/ContainerControllerSwift/AppDelegate.swift b/Example/ContainerControllerSwift/AppDelegate.swift deleted file mode 100644 index 33e3edf..0000000 --- a/Example/ContainerControllerSwift/AppDelegate.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// AppDelegate.swift -// ContainerControllerSwift -// -// Created by rustamburger@gmail.com on 06/09/2020. -// Copyright (c) 2020 rustamburger@gmail.com. All rights reserved. -// - -import UIKit - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - return true - } - - func applicationWillResignActive(_ application: UIApplication) { - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. - } - - func applicationDidEnterBackground(_ application: UIApplication) { - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. - } - - func applicationWillEnterForeground(_ application: UIApplication) { - // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. - } - - func applicationDidBecomeActive(_ application: UIApplication) { - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - } - - func applicationWillTerminate(_ application: UIApplication) { - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. - } - - -} - diff --git a/Example/ContainerControllerSwift/Base.lproj/LaunchScreen.xib b/Example/ContainerControllerSwift/Base.lproj/LaunchScreen.xib deleted file mode 100644 index 55c6860..0000000 --- a/Example/ContainerControllerSwift/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/ContainerControllerSwift/Base.lproj/Main.storyboard b/Example/ContainerControllerSwift/Base.lproj/Main.storyboard deleted file mode 100644 index 0e5e5d9..0000000 --- a/Example/ContainerControllerSwift/Base.lproj/Main.storyboard +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/ContainerControllerSwift/ExampleAddCollectionView/ExampleAddCollectionViewController.storyboard b/Example/ContainerControllerSwift/ExampleAddCollectionView/ExampleAddCollectionViewController.storyboard deleted file mode 100644 index 12294f8..0000000 --- a/Example/ContainerControllerSwift/ExampleAddCollectionView/ExampleAddCollectionViewController.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/ContainerControllerSwift/ExampleAddCollectionView/ExampleAddCollectionViewController.swift b/Example/ContainerControllerSwift/ExampleAddCollectionView/ExampleAddCollectionViewController.swift deleted file mode 100644 index 30fe820..0000000 --- a/Example/ContainerControllerSwift/ExampleAddCollectionView/ExampleAddCollectionViewController.swift +++ /dev/null @@ -1,116 +0,0 @@ -// -// ExampleAddCollectionViewController.swift -// ContainerControllerSwift -// -// Created by mrustaa on 09.06.2020. -// Copyright © 2020 mrustaa. All rights reserved. -// - -import UIKit -import ContainerControllerSwift - -class ExampleAddCollectionViewController: StoryboardController { - - var container: ContainerController! - - // MARK: - Init - - override func viewDidLoad() { - super.viewDidLoad() - - - let layoutC = ContainerLayout() - layoutC.positions = ContainerPosition(top: 100, middle: 250, bottom: 70) - container = ContainerController(addTo: self, layout: layoutC) - container.view.cornerRadius = 15 - container.view.addShadow() - container.add(scrollView: addCollectionView()) - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - - container.move(type: .middle) - } - - func addCollectionView() -> UICollectionView { - - let layout = UICollectionViewFlowLayout() - - let padding: CGFloat = 15 - layout.sectionInset = UIEdgeInsets(top: padding, left: padding, bottom: padding, right: padding) - layout.minimumLineSpacing = padding - layout.minimumInteritemSpacing = padding - - let colletion = UICollectionView(frame: CGRect.zero, collectionViewLayout: layout) - colletion.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cell") - colletion.backgroundColor = .clear - colletion.delegate = self - colletion.dataSource = self - return colletion - } -} - -// MARK: - Scroll Delegate - -extension ExampleAddCollectionViewController: UIScrollViewDelegate { - - func scrollViewDidScroll(_ scrollView: UIScrollView) { - container.scrollViewDidScroll(scrollView) - } - - func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { - container.scrollViewWillBeginDragging(scrollView) - } - - func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { - container.scrollViewDidEndDecelerating(scrollView) - } - - func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { - container.scrollViewDidEndDragging(scrollView, willDecelerate: decelerate) - } -} - - -// MARK: - Collection DataSource - -extension ExampleAddCollectionViewController: UICollectionViewDataSource { - - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - return 17 - } - - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) - - let randomInt = Int.random(in: 0..<6) - - var color: UIColor = .systemBlue - - switch randomInt { - case 0: color = .systemBlue - case 1: color = .systemRed - case 2: color = .systemGray - case 3: color = .systemGreen - case 4: color = .systemYellow - case 5: color = .systemOrange - default: break - } - - cell.backgroundColor = color - cell.layer.cornerRadius = 12 - return cell - } -} - -// MARK: - Collection Layout - -extension ExampleAddCollectionViewController: UICollectionViewDelegateFlowLayout { - - public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { - let size = ((ContainerDevice.width / 2) - 1) - 22 - return CGSize(width: size, height: size) - } -} - diff --git a/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewController.storyboard b/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewController.storyboard deleted file mode 100644 index fbf62ed..0000000 --- a/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewController.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewController.swift b/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewController.swift deleted file mode 100644 index 7fd6d07..0000000 --- a/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewController.swift +++ /dev/null @@ -1,92 +0,0 @@ -// -// ExampleAddTableViewController.swift -// ContainerControllerSwift -// -// Created by mrustaa on 09.06.2020. -// Copyright © 2020 mrustaa. All rights reserved. -// - -import UIKit -import ContainerControllerSwift - -class ExampleAddTableViewController: StoryboardController { - - var container: ContainerController! - - // MARK: - Init - - override func viewDidLoad() { - super.viewDidLoad() - - let layout = ContainerLayout() - layout.backgroundShadowShow = true - layout.positions = ContainerPosition(top: 70, middle: 250, bottom: 100) - container = ContainerController(addTo: self, layout: layout) - container.view.cornerRadius = 15 - container.view.addShadow() - container.add(scrollView: addTableView()) - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - - container.move(type: .top) - } - - func addTableView() -> UITableView { - - let tableView = UITableView() - tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") - tableView.delegate = self - tableView.dataSource = self - return tableView - } - -} - -// MARK: - Scroll Delegate - -extension ExampleAddTableViewController: UIScrollViewDelegate { - - func scrollViewDidScroll(_ scrollView: UIScrollView) { - container.scrollViewDidScroll(scrollView) - } - - func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { - container.scrollViewWillBeginDragging(scrollView) - } - - func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { - container.scrollViewDidEndDecelerating(scrollView) - } - - func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { - container.scrollViewDidEndDragging(scrollView, willDecelerate: decelerate) - } -} - -// MARK: - Table Delegate - -extension ExampleAddTableViewController: UITableViewDelegate { - - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - return 60 - } -} - -// MARK: - Table DataSource - -extension ExampleAddTableViewController: UITableViewDataSource { - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 21 - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) - cell.textLabel?.text = "item \(indexPath.row)" - cell.backgroundColor = .clear - return cell - } -} - diff --git a/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift b/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift deleted file mode 100644 index 0cfd624..0000000 --- a/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift +++ /dev/null @@ -1,92 +0,0 @@ -// -// ExampleAddTableViewControllerSettings.swift -// ContainerControllerSwift -// -// Created by mrustaa on 09.06.2020. -// Copyright © 2020 mrustaa. All rights reserved. -// - -import UIKit -import ContainerControllerSwift - -extension ExampleAddTableViewController { - - // MARK: - Settings - - func changeViewParametrs() { - - container.view.cornerRadius = 15 // Change cornerRadius global - container.view.addShadow(opacity: 0.1) // Add layer shadow - container.view.addBlur(style: .dark) // Add background blur UIVisualEffectView - } - - func changeViewCustom() { - - // Add custom shadow - let layer = container.view.layer - layer.shadowOpacity = 0.5 - layer.shadowColor = UIColor.red.cgColor - layer.shadowOffset = CGSize(width: 1, height: 4) - layer.shadowRadius = 5 - - // Add view in container.view - let viewRed = UIView(frame: CGRect(x: 50, y: 50, width: 50, height: 50)) - viewRed.backgroundColor = .systemRed - container.view.addSubview(viewRed) - - // Add view under scrollView container.view - let viewGreen = UIView(frame: CGRect(x: 25, y: 25, width: 50, height: 50)) - viewGreen.backgroundColor = .systemGreen - container.view.insertSubview(viewGreen, at: 0) - } - - func createLayout() { - - let layout = ContainerLayout() - layout.startPosition = .hide - layout.backgroundShadowShow = false - layout.positions = ContainerPosition(top: 70, middle: 250, bottom: 70) - - } - - // MARK: - Change settings right away - - func changeRightAway() { - - // Properties - container.set(movingEnabled: true) - container.set(trackingPosition: false) - container.set(footerPadding: 100) - - // Add ScrollInsets Top/Bottom - container.set(scrollIndicatorTop: 5) // ↓ - container.set(scrollIndicatorBottom: 5) // ↑ - - // Positions - container.set(top: 70) // ↓ - container.set(middle: 250) // ↑ - container.set(bottom: 80) // ↑ - - // Middle Enable/Disable - container.set(middle: 250) - container.set(middle: nil) - - // Background Shadow - container.set(backgroundShadowShow: true) - - // Insets View - container.set(left: 5) // → - container.set(right: 5) // ← - - // Landscape params - container.setLandscape(top: 30) - container.setLandscape(middle: 150) - container.setLandscape(bottom: 70) - container.setLandscape(middle: nil) - - container.setLandscape(backgroundShadowShow: false) - - container.setLandscape(left: 10) - container.setLandscape(right: 100) - } -} diff --git a/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesContainerController.swift b/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesContainerController.swift deleted file mode 100644 index 3a8e45d..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesContainerController.swift +++ /dev/null @@ -1,273 +0,0 @@ -// -// ExamplesContainerController.swift -// ContainerController -// -// Created by mrustaa on 31/05/2020. -// Copyright © 2020 mrustaa. All rights reserved. -// - -import UIKit -import ContainerControllerSwift - - -class ExamplesContainerController: ContainerController, ExampleCellDelegate { - - // MARK: - Properties - - var items: [TableAdapterItem] = [] - - // MARK: - Init - - public init(addTo controller: UIViewController, style: ExamplesContainerController.ScrollType) { - - let layout = ContainerLayout() - layout.startPosition = .hide - layout.backgroundShadowShow = false - layout.positions = ContainerPosition(top: 70, middle: 250, bottom: 70) - - super.init(addTo: controller, layout: layout) - - loadContainerView() - loadTableItems() - - var scrollIndex: CGFloat = 0 - switch style { - case .tableAdapterView: scrollIndex = 1 - case .collectionAdapterView: scrollIndex = 2 - case .collectionAdapterView2: scrollIndex = 3 - case .textView: scrollIndex = 4 - default: break - } - - exampleCell( TableAdapterCell(), type: .scroll, value: scrollIndex, endEditing: true) - } - - //MARK: - Load Container-View - - func loadContainerView() { - - view.backgroundColor = .white - view.cornerRadius = 15 - view.addShadow() - } - - //MARK: - Load Items - - func loadTableItems() { - - items = [] - - let h: CGFloat = 45 - - items = [ - ExampleSegmentCellItem(height: h, delegate: self, type: .moveType, segmentItems: ["Top", "Middle", "Bottom", "Hide"]), - ExampleSegmentCellItem(height: h, delegate: self, type: .headerView, segmentItems: ["-", "Grip", "Label", "Details", "Search"]), - ExampleSegmentCellItem(height: h, delegate: self, type: .footerView, segmentItems: ["-", "Button", "TabBar"]), - ExampleSegmentCellItem(height: h, delegate: self, type: .color, segmentItems: ["-", ".white", ".red", ".green", ".blue"], index: 1), - ExampleSegmentCellItem(height: h, delegate: self, type: .blur, segmentItems: ["-", "Light", "ExtraLight", "Dark"]), - ExampleSegmentCellItem(height: h, delegate: self, type: .scroll, segmentItems: ["-", "Table", "Coll", "Coll2", "Text"]), - - ExampleSwitchCellItem(height: h, delegate: self, type: .shadowBackground, value: false), - ExampleSliderCellItem(height: h, delegate: self, type: .shadowContainer, value: 0.2, maximumValue: 1.0), - ExampleSliderCellItem(height: h, delegate: self, type: .cornerRadius, value: 15, maximumValue: 140), - ExampleSwitchCellItem(height: h, delegate: self, type: .movingEnabled, value: true), - ExampleSwitchCellItem(height: h, delegate: self, type: .trackingPosition, value: false), - ExampleSliderCellItem(height: h, delegate: self, type: .footerPadding, value: 0, maximumValue: Float(ContainerDevice.screenMax)), - - ExampleSliderCellItem(height: h, delegate: self, type: .top, value: 70, maximumValue: 250), - ExampleSliderCellItem(height: h, delegate: self, type: .middle, value: 250, maximumValue: 500, minimumValue: 140), - ExampleSliderCellItem(height: h, delegate: self, type: .bottom, value: 70, maximumValue: 300), - ExampleSwitchCellItem(height: h, delegate: self, type: .middleEnable, value: true), - ExampleSliderCellItem(height: h, delegate: self, type: .insetsLeft, value: 0, maximumValue: Float(ContainerDevice.screenMin)), - ExampleSliderCellItem(height: h, delegate: self, type: .insetsRight, value: 0, maximumValue: Float(ContainerDevice.screenMin)), - - ExampleSliderCellItem(height: h, delegate: self, type: .landscapeTop, value: 20, maximumValue: 250), - ExampleSliderCellItem(height: h, delegate: self, type: .landscapeMiddle, value: 150, maximumValue: 300, minimumValue: 70), - ExampleSliderCellItem(height: h, delegate: self, type: .landscapeBottom, value: 70, maximumValue: 300), - ExampleSwitchCellItem(height: h, delegate: self, type: .landscapeMiddleEnable, value: false), - ExampleSliderCellItem(height: h, delegate: self, type: .landscapeInsetsLeft, value: 0, maximumValue: Float(ContainerDevice.screenMax)), - ExampleSliderCellItem(height: h, delegate: self, type: .landscapeInsetsRight, value: 0, maximumValue: Float(ContainerDevice.screenMax)), - - ExampleSliderCellItem(height: h, delegate: self, type: .scrollIndicatorInsetsTop, value: 0, maximumValue: 300), - ExampleSliderCellItem(height: h, delegate: self, type: .scrollIndicatorInsetsBottom, value: 0, maximumValue: 300), - - ] - } - - // MARK: - Cell Delegate - - func exampleCell(_ cell: TableAdapterCell, type: ExampleCell.Style, value: CGFloat, endEditing: Bool) { - - // print("\(type) \(value) ") - let boolValue = (value == 1) - - switch type { - case .top - , .middle - , .bottom - , .landscapeTop - , .landscapeMiddle - , .landscapeBottom - , .insetsLeft - , .insetsRight - , .landscapeInsetsLeft - , .landscapeInsetsRight: - if !endEditing { return } - default: break - } - - switch type { - - case .cornerRadius: self.view.cornerRadius = value - - case .shadowContainer: self.view.addShadow(opacity: value) - - case .movingEnabled: set(movingEnabled: boolValue) - - case .trackingPosition: set(trackingPosition: boolValue) - - case .footerPadding: set(footerPadding: value) - - // MARK: ScrollInsets - - case .scrollIndicatorInsetsTop: set(scrollIndicatorTop: value) - case .scrollIndicatorInsetsBottom: set(scrollIndicatorBottom: value) - - // MARK: Positions - - case .top: set(top: value); if ContainerDevice.isPortrait { move(type: .top) } - case .middle: set(middle: value); if ContainerDevice.isPortrait { move(type: .middle) } - case .bottom: set(bottom: value); if ContainerDevice.isPortrait { move(type: .bottom) } - - case .landscapeTop: setLandscape(top: value); if !ContainerDevice.isPortrait { move(type: .top) } - case .landscapeMiddle: setLandscape(middle: value); if !ContainerDevice.isPortrait { move(type: .middle) } - case .landscapeBottom: setLandscape(bottom: value); if !ContainerDevice.isPortrait { move(type: .bottom) } - - // MARK: MiddleEnable - - case .middleEnable: set(middle: (boolValue ? 250 : nil)) - - case .landscapeMiddleEnable: setLandscape(middle: (boolValue ? 150 : nil)) - - - // MARK: Background Shadow - - case .shadowBackground: set(backgroundShadowShow: boolValue) - - case .landscapeShadowBackground: setLandscape(backgroundShadowShow: boolValue) - - // MARK: Insets - - case .insetsLeft: set(left: value) - case .insetsRight: set(right: value) - - case .landscapeInsetsLeft: setLandscape(left: value) - case .landscapeInsetsRight: setLandscape(right: value) - - // MARK: MoveType - - case .moveType: - - switch value { - case 0: move(type: .top) - case 1: move(type: .middle) - case 2: move(type: .bottom) - default: move(type: .hide) - } - - // MARK: ScrollViews - - case .scroll: - - switch value { - case 1: add(scrollView: createTableAdapterView(items: items, view: view)) - case 2: add(scrollView: createMapsCollectionAdapterView()) - case 3: add(scrollView: createCollectionAdapterView(width: view.width)) - case 4: add(scrollView: createTextView()) - default: removeScrollView() - } - - - // MARK: HeaderView - - case .headerView: - switch value { - case 1: - let header = ExampleHeaderGripView() - header.height = 20 - self.add(headerView: header) - case 2: - let header = MapsMenuHeader() - header.titleLabel.text = "Settings" - header.separatorView?.alpha = 1.0 - self.add(headerView: header) - case 3: - let header = HeaderDetailsView() - header.titleLabel.text = "Title Header" - header.subtitle.text = "Subtitle" - header.textButton.setTitle("Button Text", for: .normal) - header.separatorView?.alpha = 1.0 - self.add(headerView: header) - case 4: - let header = HeaderSearchBarView() - header.separatorView?.alpha = 1.0 - self.add(headerView: header) - default: - self.removeHeaderView() - } - - // MARK: FooterView - - case .footerView: - switch value { - case 1: - let footer = ExampleFooterButtonView() - self.add(footerView: footer) - case 2: - let tabbar = HeaderTabBarView() - tabbar.height = (49.0 + ContainerDevice.isIphoneXBottom) - self.add(footerView: tabbar) - default: - self.removeFooterView() - } - - // MARK: BackgroundColor - - case .color: - self.view.removeBlur() - - switch value { - case 0: view.backgroundColor = .clear - case 1: view.backgroundColor = .white - case 2: view.backgroundColor = .systemRed - case 3: view.backgroundColor = .systemGreen - case 4: view.backgroundColor = .systemBlue - default: break - } - - - // MARK: Blur - - case .blur: - view.backgroundColor = .clear - - switch value { - case 0: self.view.removeBlur() - case 1: self.view.addBlur(style: .light) - case 2: self.view.addBlur(style: .extraLight) - case 3: self.view.addBlur(style: .dark) - default: break - } - - default: break - } - - - - } - -} - - - - diff --git a/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesContainerControllerScrollType.swift b/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesContainerControllerScrollType.swift deleted file mode 100644 index 2a67a2e..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesContainerControllerScrollType.swift +++ /dev/null @@ -1,25 +0,0 @@ -// -// ExamplesContainerControllerScrollType.swift -// ContainerController -// -// Created by mrustaa on 03/06/2020. -// Copyright © 2020 mrustaa. All rights reserved. -// - -import UIKit - -extension ExamplesContainerController { - - public enum ScrollType: String, CaseIterable { - case empty = "-" - case tableAdapterView = "TableAdapterView (⚙️ Settings)" - case collectionAdapterView = "CollectionAdapterView" - case collectionAdapterView2 = "CollectionAdapterView 2" - case textView = "TextView" - case mapsContainer = "Main (Maps.app)" - case locationContainer = "Location (Maps.app)" - case routeContainer = "Route (Maps.app)" - case menuContainer = "Menu (Maps.app)" - } -} - diff --git a/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesScrollViews.swift b/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesScrollViews.swift deleted file mode 100644 index b13d19f..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesScrollViews.swift +++ /dev/null @@ -1,138 +0,0 @@ -// -// ExamplesScrollViews.swift -// ContainerController -// -// Created by mrustaa on 30/05/2020. -// Copyright © 2020 mrustaa. All rights reserved. -// - -import UIKit -import ContainerControllerSwift - -// MARK: - CollectionAdapterView Maps - -func createMapsCollectionAdapterView() -> CollectionAdapterView { - - let colletion = CollectionAdapterView(frame: CGRect.zero, collectionViewLayout: UICollectionViewFlowLayout()) - var colletionItems: [CollectionAdapterItem] = [] - - for _ in 0...3 { - for item in MapsFavoritesCellData.collectionItems() { - colletionItems.append(item) - } - } - - colletion.set(items: colletionItems) - - return colletion -} - -// MARK: - CollectionAdapterView - -func createCollectionAdapterView(width: CGFloat) -> CollectionAdapterView { - - let layout = UICollectionViewFlowLayout() - - let padding: CGFloat = 15 - layout.sectionInset = UIEdgeInsets(top: padding, left: padding, bottom: padding, right: padding) - layout.minimumLineSpacing = padding - layout.minimumInteritemSpacing = padding - - let colletion = CollectionAdapterView(frame: CGRect.zero, collectionViewLayout: layout) - - var colletionItems: [CollectionAdapterItem] = [] - for _ in 1...17 { - colletionItems.append( ExampleCollectionItem(width: width - 1, padding: padding) ) - } - colletion.set(items: colletionItems) - - return colletion -} - -// MARK: - TableAdapterView - -func createTableAdapterView(items: [TableAdapterItem]? = nil, view: UIView) -> TableAdapterView { - - let table = TableAdapterView() - table.separatorColor = Colors.grayLevel(0.75) - - if let items = items { - table.set(items: items, animated: true) - } - - table.didScrollCallback = { - view.endEditing(true) - } - return table -} - -// MARK: - TableView - -func createTableView() -> UITableView { - - let tableView = UITableView() - tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") - tableView.backgroundColor = .clear - tableView.tableFooterView = UIView() - - return tableView - -} - -// MARK: - TextView - -func createTextView() -> UITextView { - - let textView = UITextView() - textView.returnKeyType = .done - textView.backgroundColor = .clear - textView.font = UIFont.systemFont(ofSize: 15) - textView.text = """ - This example demonstrates a block quote. Because some introductory phrases will lead - naturally into the block quote, - you might choose to begin the block quote with a lowercase letter. In this and the later - examples we use “Lorem ipsum” text to ensure that each block quotation contains 40 words or - more. Lorem ipsum dolor sit amet, consectetur adipiscing elit. (Organa, 2013, p. 234) - Example 2 - This example also demonstrates a block quote. Some introductory sentences end abruptly in a - colon or a period: - In those cases, you are more likely to capitalize the beginning word of the block quotation. - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nisi mi, pharetra sit amet mi vitae, - commodo accumsan dui. Donec non scelerisque quam. Pellentesque ut est sed neque. - (Calrissian, 2013, para. 3) - Example 3 - This is another example of a block quotation. Sometimes, the author(s) being cited will be - included in the introduction. In that case, according to Skywalker and Solo, - because the author names are in the introduction of this quote, the parentheses that follow it - will include only the year and the page number. Lorem ipsum dolor sit amet, consectetur - adipiscing elit. Sed nisi mi, pharetra sit amet mi vitae, commodo accumsan dui. Donec non - scelerisque quam. Pellentesque ut est sed neque. (2013, p. 103) - Copyright © 2013 by the American Psychological Association. This content may be reproduced for classroom or teaching purposes - provided that credit is given to the American Psychological Association. For any other use, please contact the APA Permissions Office. - Example 4 - In this example, we have added our own emphasis. This needs to be indicated parenthetically, - so the reader knows that the italics were not in the original text. Amidala (2009) dabbled in hyperbole, - saying, - Random Explosions 2: Revenge of the Dialogue is the worst movie in the history of time - [emphasis added]. . . . it’s [sic] promise of dialogue is a misnomer of explosive proportions. Lorem ipsum - dolor sit amet, consectetur adipiscing elit. Sed nisi mi, pharetra sit amet mi vitae. (p. 13) - This paragraph appears flush left because it is a continuation of the paragraph we began above the block - quote. Note that we also added “[sic]” within the block quotation to indicate that a misspelling was in - the original text, and we’ve included ellipses (with four periods) because we have omitted a sentence - from the quotation (see pp. 172–173 of the Publication Manual of the American Psychological - Association). - Example 5 - This example is similar to the previous one, except that we have continued the quotation to - include text from a second paragraph. Amidala (2009) dabbled in hyperbole, saying, - Random Explosions 2: Revenge of the Dialogue is the worst movie in the history of time - [emphasis added]. . . . it’s [sic] promise of dialogue is a misnomer of explosive proportions. - On the other hand, Delightful Banter on Windswept Mountainside is a film to be - cherished for all time. Filmmakers hoping to top this film should abandon hope. (p. 13) - This paragraph begins with an indent because we do not intend it to continue the paragraph - that we started above the block quote. Note that we also added “[sic]” within the block quotation to - indicate that a misspelling was in the original text, and we’ve included ellipses (with four periods) - because we have omitted a sentence from this quotation (see pp. 172–173 of the Manual). - """ - - return textView -} diff --git a/Example/ContainerControllerSwift/ExamplesSettings/ExamplesSettingsViewController.storyboard b/Example/ContainerControllerSwift/ExamplesSettings/ExamplesSettingsViewController.storyboard deleted file mode 100644 index 82db891..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/ExamplesSettingsViewController.storyboard +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/ContainerControllerSwift/ExamplesSettings/ExamplesSettingsViewController.swift b/Example/ContainerControllerSwift/ExamplesSettings/ExamplesSettingsViewController.swift deleted file mode 100644 index 35b2cc7..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/ExamplesSettingsViewController.swift +++ /dev/null @@ -1,124 +0,0 @@ - - - -import UIKit -import ContainerControllerSwift - - -class ExamplesSettingsViewController: StoryboardController { - - // MARK: - Properties - - var containers: [ContainerController] = [] - var items: [TableAdapterItem] = [] - - @IBOutlet weak var tableView: TableAdapterView? - - // MARK: - Life cycle - - override func viewDidLoad() { - super.viewDidLoad() - - let barButtonAddItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(navigationBarAddAction)) - let barButtonCloseItem = UIBarButtonItem(barButtonSystemItem: .close, target: self, action: #selector(navigationBarCloseAction)) - self.navigationItem.rightBarButtonItems = [ barButtonAddItem, barButtonCloseItem ] - - loadTableView() - - containers(addStyle: .tableAdapterView) - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - - for container in containers { - container.remove() - } - } - - // MARK: - Load TableView - - func loadTableView() { - - tableView?.deleteIndexCallback = { [weak self] (index) in - guard let _self = self else { return } - _self.containers(remove: index) - } - tableView?.selectIndexCallback = { [weak self] (index) in - guard let _self = self else { return } - _self.containers[index].move(type: .top) - } - tableView?.didScrollCallback = { [weak self] in - guard let _self = self else { return } - - _self.view.endEditing(true) - } - } - - // MARK: - Navigation Bar Actions - - @objc func navigationBarCloseAction(_ sender: UIBarButtonItem) { - containers(remove: containers.count - 1) - } - - @objc func navigationBarAddAction(_ sender: UIBarButtonItem? = nil) { - - let alert = UIAlertController(title: "Add Container", - message: "together with ScrollView", - preferredStyle: .actionSheet) - - alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) - - ExamplesContainerController.ScrollType.allCases.forEach { style in - alert.addAction(UIAlertAction(title: style.rawValue, - style: style == .tableAdapterView ? .destructive : .default, - handler: { [weak self] _ in - guard let _self = self else { return } - _self.containers(addStyle: style) - })) - } - - self.present(alert, animated: true) - } - - // MARK: - Add/Remove Container - - func containers(addStyle containerStyle: ExamplesContainerController.ScrollType) { - - switch containerStyle { - case .mapsContainer: containers(add: MapsContainerController(addTo: self, darkStyle: false), style: containerStyle) - case .locationContainer: containers(add: LocationContainerController(addTo: self, darkStyle: false), style: containerStyle) - case .routeContainer: containers(add: RouteContainerController(addTo: self, darkStyle: false), style: containerStyle) - case .menuContainer: containers(add: MenuContainerController(addTo: self, darkStyle: false, selectedIndex: 0), style: containerStyle) - default: containers(add: ExamplesContainerController(addTo: self, style: containerStyle), style: containerStyle) - } - } - - func containers(add container: ContainerController, style: ExamplesContainerController.ScrollType) { - - container.move(type: .bottom, completion: { - container.move(type: .top) - }) - - containers.append(container) - - let subTitle = String(describing: type(of: container)) - let title = style.rawValue - - items.append( TitleTextItem(title: title, subtitle: subTitle, editing: true) ) - tableView?.set(items: items, animated: true) - } - - func containers(remove index: Int) { - if containers.isEmpty, items.isEmpty { return } - - let container = containers[index] - container.remove() - - containers.remove(at: index) - items.remove(at: index) - - tableView?.set(items: items, animated: true) - } -} - diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCell.swift b/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCell.swift deleted file mode 100644 index 86987ab..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCell.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// ExampleCell.swift -// ContainerController -// -// Created by mrustaa on 28/05/2020. -// Copyright © 2020 mrustaa. All rights reserved. -// - -import UIKit -import ContainerControllerSwift - -// MARK: - Cell Delegate - -protocol ExampleCellDelegate { - func exampleCell(_ cell: TableAdapterCell, type: ExampleCell.Style, value: CGFloat, endEditing: Bool) -} - -// MARK: - Cell Data - -class ExampleCellData: TableAdapterCellData { - - var delegate: ExampleCellDelegate? - var callback: ((Int) -> Void)? - - var type: ExampleCell.Style - var title: String - - var cellSizeHeight: CGFloat? - - init(_ type: ExampleCell.Style, - _ title: String?, - _ cellHeight: CGFloat?, - _ delegate: ExampleCellDelegate?, - _ callback: ((Int) -> Void)?) { - - self.type = type - - if type != .default { - self.title = type.rawValue - } else { - self.title = title ?? "" - } - - self.delegate = delegate - self.callback = callback - - self.cellSizeHeight = cellHeight - - super.init() - } - - override public func cellHeight() -> CGFloat { - return cellSizeHeight ?? 51.0 - } -} - - diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCellStyle.swift b/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCellStyle.swift deleted file mode 100644 index 435898c..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCellStyle.swift +++ /dev/null @@ -1,51 +0,0 @@ -// -// ExampleCellStyle.swift -// ContainerController -// -// Created by mrustaa on 02/06/2020. -// Copyright © 2020 mrustaa. All rights reserved. -// - -import UIKit -import ContainerControllerSwift - -// MARK: - Cell Style - -class ExampleCell: TableAdapterCell { - -} - -extension ExampleCell { - - public enum Style: String { - case `default` = "" - case shadowContainer = "ShadowContainer" - case movingEnabled = "MovingEnabled" - case cornerRadius = "CornerRadius" - case footerPadding = "FooterView.Padding" - case headerView = "HeaderView" - case footerView = "FooterView" - case color = "BackgroundColor" - case blur = "Blur" - case scroll = "ScrollView" - case trackingPosition = "TrackingPosition" - case scrollIndicatorInsetsTop = "↓ .Scroll.Indicator.Insets.Top" - case scrollIndicatorInsetsBottom = "↑ .Scroll.Indicator.Insets.Bottom" - case moveType = "MoveType" - case top = "↓ .Top" - case middle = "↑ .Middle" - case bottom = "↑ .Bottom " - case middleEnable = "MiddleEnable" - case insetsRight = "Insets.Right" - case insetsLeft = "Insets.Left" - case shadowBackground = "ShadowBackground" - case landscapeTop = "↓ Landscape.Top" - case landscapeMiddle = "↑ Landscape.Middle" - case landscapeBottom = "↑ Landscape.Bottom " - case landscapeMiddleEnable = "Landscape.MiddleEnable" - case landscapeInsetsRight = "Landscape.Insets.Right" - case landscapeInsetsLeft = "Landscape.Insets.Left" - case landscapeShadowBackground = "Landscape.ShadowBackground" - } - -} diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift b/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift deleted file mode 100644 index 23dec3a..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift +++ /dev/null @@ -1,106 +0,0 @@ - - - - -import UIKit -import ContainerControllerSwift - -// MARK: - Item - -class ExampleSegmentCellItem: TableAdapterItem { - - init(height: CGFloat? = nil, - delegate: ExampleCellDelegate? = nil, - type: ExampleCell.Style = .default, - title: String? = nil, - segmentItems: [String]? = nil, - index: Int? = nil, - callback: ((Int) -> Void)? = nil) { - - let cellData = ExampleSegmentCellData(type, title, segmentItems, index, height, delegate, callback) - - super.init(cellClass: ExampleSegmentCell.self, cellData: cellData) - } -} - -// MARK: - Data - -class ExampleSegmentCellData: ExampleCellData { - - // MARK: Properties - - var segmentItems: [String] - var selectIndex: Int - - // MARK: Inits - - init(_ type: ExampleCell.Style, - _ title: String?, - _ segmentItems: [String]?, - _ index: Int?, - _ cellHeight: CGFloat?, - _ delegate: ExampleCellDelegate?, - _ callback: ((Int) -> Void)?) { - - self.segmentItems = segmentItems ?? [] - self.selectIndex = index ?? 0 - - super.init(type, title, cellHeight, delegate, callback) - } - - - override public func cellHeight() -> CGFloat { - return 81 - } - -} - -// MARK: - Cell - -class ExampleSegmentCell: TableAdapterCell { - - // MARK: Properties - - public var data: ExampleSegmentCellData? - - // MARK: Outlets - - @IBOutlet override var selectedView: UIView? { - didSet { } - } - - @IBOutlet private weak var segmentControl: UISegmentedControl? - @IBOutlet private weak var titleLabel: UILabel? - - // MARK: Load - - override func awakeFromNib() { - } - - // MARK: Initialize - - override func fill(data: TableAdapterCellData?) { - guard let data = data as? ExampleSegmentCellData else { return } - self.data = data - - titleLabel?.text = data.title - - segmentControl?.removeAllSegments() - for (index, item) in data.segmentItems.enumerated() { - segmentControl?.insertSegment(withTitle: item, at: index, animated: false) - } - segmentControl?.selectedSegmentIndex = data.selectIndex - - } - - @IBAction func segmentAction(_ sender: UISegmentedControl) { - guard let data = data else { return } - - let value = sender.selectedSegmentIndex - data.selectIndex = value - - data.callback?(value) - data.delegate?.exampleCell(self, type: data.type, value: CGFloat(value), endEditing: true) - } - -} diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.xib b/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.xib deleted file mode 100644 index 651089d..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.xib +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift b/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift deleted file mode 100644 index 87fa427..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift +++ /dev/null @@ -1,131 +0,0 @@ - - - - -import UIKit -import ContainerControllerSwift - -// MARK: - Item - -class ExampleSliderCellItem: TableAdapterItem { - - init(height: CGFloat? = nil, - delegate: ExampleCellDelegate? = nil, - type: ExampleCell.Style = .default, - title: String? = nil, - - value: Float? = nil, - maximumValue: Float? = nil, - minimumValue: Float? = nil, - callback: ((Int) -> Void)? = nil) { - - let cellData = ExampleSliderCellData(type, title, value, maximumValue, minimumValue, height, delegate, callback) - - super.init(cellClass: ExampleSliderCell.self, cellData: cellData) - } -} - -// MARK: - Data - -class ExampleSliderCellData: ExampleCellData { - - // MARK: Properties - - var value: Float - var maximumValue: Float - var minimumValue: Float - - // MARK: Inits - - init(_ type: ExampleCell.Style, - _ title: String? = nil, - _ value: Float? = nil, - _ maximumValue: Float? = nil, - _ minimumValue: Float? = nil, - _ cellHeight: CGFloat?, - _ delegate: ExampleCellDelegate?, - _ callback: ((Int) -> Void)?) { - - let v = value ?? 1.0 - - self.value = v - self.maximumValue = maximumValue ?? v - self.minimumValue = minimumValue ?? 0.0 - - super.init(type, title, cellHeight, delegate, callback) - } - - override public func cellHeight() -> CGFloat { - return 75.0 - } -} - -// MARK: - Cell - -class ExampleSliderCell: ExampleCell { - - // MARK: Properties - - public var data: ExampleSliderCellData? - - // MARK: Outlets - - @IBOutlet override var selectedView: UIView? { - didSet { } - } - - @IBOutlet private weak var slider: UISlider? - @IBOutlet private weak var titleLabel: UILabel? - @IBOutlet private weak var valueLabel: UILabel? - - // MARK: Load - - override func awakeFromNib() { - } - - // MARK: Initialize - - override func fill(data: TableAdapterCellData?) { - guard let data = data as? ExampleSliderCellData else { return } - self.data = data - - titleLabel?.text = data.title - - slider?.maximumValue = data.maximumValue - slider?.minimumValue = data.minimumValue - slider?.value = data.value - - if let slider = slider { - let value = slider.value - valueLabel?.text = String(format: "%.1f", value) - data.value = value - } - } - - @IBAction func sliderAction(_ sender: UISlider) { - valueLabel(slider: sender) - } - - func valueLabel(slider: UISlider) { - guard let data = data else { return } - - let value = slider.value - valueLabel?.text = String(format: "%.1f", value) - data.value = value - - data.callback?(Int(value)) - data.delegate?.exampleCell(self, type: data.type, value: CGFloat(value), endEditing: false) - } - - @IBAction func touchUpInside(_ slider: UISlider) { - guard let data = data else { return } - - let value = slider.value - valueLabel?.text = String(format: "%.1f", value) - data.value = value - - data.callback?(Int(value)) - data.delegate?.exampleCell(self, type: data.type, value: CGFloat(value), endEditing: true) - } - -} diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.xib b/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.xib deleted file mode 100644 index bf8543e..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.xib +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift b/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift deleted file mode 100644 index 37e7a51..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift +++ /dev/null @@ -1,94 +0,0 @@ - - - - -import UIKit -import ContainerControllerSwift - -// MARK: - Item - -class ExampleSwitchCellItem: TableAdapterItem { - - init(height: CGFloat? = nil, - delegate: ExampleCellDelegate? = nil, - type: ExampleCell.Style = .default, - title: String = "", - value: Bool = false, - callback: ((Int) -> Void)? = nil) { - - let cellData = ExampleSwitchCellData(type, title, value, height, delegate, callback) - - super.init(cellClass: ExampleSwitchCell.self, cellData: cellData) - } -} - -// MARK: - Data - -class ExampleSwitchCellData: ExampleCellData { - - // MARK: Properties - - var value: Bool - - // MARK: Inits - - init(_ type: ExampleCell.Style, - _ title: String, - _ value: Bool, - _ cellHeight: CGFloat?, - _ delegate: ExampleCellDelegate?, - _ callback: ((Int) -> Void)?) { - - self.value = value - - super.init(type, title, cellHeight, delegate, callback) - } - - override public func cellHeight() -> CGFloat { - return cellSizeHeight ?? 51.0 - } - -} - -// MARK: - Cell - -class ExampleSwitchCell: TableAdapterCell { - - // MARK: Properties - - public var data: ExampleSwitchCellData? - - // MARK: Outlets - - @IBOutlet override var selectedView: UIView? { - didSet { } - } - - @IBOutlet private weak var switchButton: UISwitch? - @IBOutlet private weak var titleLabel: UILabel? - - // MARK: Load - - override func awakeFromNib() { - } - - // MARK: Initialize - - override func fill(data: TableAdapterCellData?) { - guard let data = data as? ExampleSwitchCellData else { return } - self.data = data - - titleLabel?.text = data.title - switchButton?.setOn(data.value, animated: false) - } - - @IBAction func switchAction(_ sender: UISwitch) { - guard let data = data else { return } - - let value = sender.isOn - data.value = value - - data.callback?((value ? 1 : 0)) - data.delegate?.exampleCell(self, type: data.type, value: (value ? 1 : 0), endEditing: true) - } -} diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.xib b/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.xib deleted file mode 100644 index f8999ce..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.xib +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift b/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift deleted file mode 100644 index f7422ff..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift +++ /dev/null @@ -1,117 +0,0 @@ - - - - -import UIKit -import ContainerControllerSwift - -// MARK: - Item - -class TitleTextItem: TableAdapterItem { - - init(title: String? = nil, - subtitle: String? = nil, - separator: Bool = false, - clss: AnyClass? = nil, - touchAnimationHide: Bool = false, - editing: Bool = false) { - - let cellData = TitleTextCellData(title, subtitle, separator, clss, touchAnimationHide, editing) - - super.init(cellClass: TitleTextCell.self, cellData: cellData) - } -} - -// MARK: - Data - -class TitleTextCellData: TableAdapterCellData { - - // MARK: Properties - - var title: String? - var subtitle: String? - var clss: AnyClass? - var separatorVisible: Bool - var touchAnimationHide: Bool - - var editing: Bool - - // MARK: Inits - - init(_ title: String? = nil, - _ subtitle: String? = nil, - _ separator: Bool, - _ clss: AnyClass? = nil, - _ touchAnimationHide: Bool, - _ editing: Bool) { - - self.title = title - self.subtitle = subtitle - - self.clss = clss - - self.separatorVisible = separator - self.touchAnimationHide = touchAnimationHide - - self.editing = editing - - super.init() - } - - override public func cellHeight() -> CGFloat { - - if title != nil { - return 64 - } else { - return 44 - } - } - - override public func canEditing() -> Bool { - return editing - } -} - -// MARK: - Cell - -class TitleTextCell: TableAdapterCell { - - // MARK: Properties - - public var data: TitleTextCellData? - - // MARK: Outlets - - @IBOutlet override var selectedView: UIView? { - didSet { } - } - - @IBOutlet private weak var titleLabel: UILabel? - @IBOutlet private weak var subtitleLabel: UILabel? - @IBOutlet private weak var separatorView: UIView? - @IBOutlet private weak var separatorHeightConstraint: NSLayoutConstraint? - - // MARK: Initialize - - override func awakeFromNib() { - separatorView?.backgroundColor = .clear - separatorHeightConstraint?.constant = 0.5 - } - - override func fill(data: TableAdapterCellData?) { - guard let data = data as? TitleTextCellData else { return } - self.data = data - -// self._hideAnimation = data.touchAnimationHide - - titleLabel?.text = data.title - - subtitleLabel?.text = (data.clss != nil) ? classNameString(data.clss!) : data.subtitle - - separatorView?.isHidden = !data.separatorVisible - } - - func classNameString(_ obj: Any) -> String { - return String(describing: type(of: obj)) - } -} diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.xib b/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.xib deleted file mode 100644 index 2919ec5..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.xib +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift b/Example/ContainerControllerSwift/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift deleted file mode 100644 index 9b61f64..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift +++ /dev/null @@ -1,91 +0,0 @@ - - - -import UIKit -import ContainerControllerSwift - - -class ExampleCollectionItem: CollectionAdapterItem { - - init(width: CGFloat, - padding: CGFloat, - clickCallback: (() -> Void)? = nil) { - - let cellData = ExampleCollectionCellData(width, padding, clickCallback) - - super.init(cellClass: ExampleCollectionCell.self, cellData: cellData) - } -} - - -class ExampleCollectionCellData: CollectionAdapterCellData { - - // MARK: Properties - - public var width: CGFloat - public var padding: CGFloat - public var clickCallback: (() -> Void)? - - // MARK: Inits - - public init (_ width: CGFloat, - _ padding: CGFloat, - _ clickCallback: (() -> Void)?) { - - self.width = width - self.padding = padding - self.clickCallback = clickCallback - - super.init() - } - - override public func size() -> CGSize { - let w = (width / 2) - ((padding / 2) * 3) - return CGSize(width: w, height: w) - } -} - - -class ExampleCollectionCell: CollectionAdapterCell { - - // MARK: Outlets - - @IBOutlet weak var imageButton: DesignButton? - @IBOutlet weak var titleLabel: UILabel? - @IBOutlet weak var subtitleLabel: UILabel? - - // MARK: Properties - - public var data: ExampleCollectionCellData? - - override func awakeFromNib() { - - } - - override func fill(data: Any?) { - - guard let data = data as? ExampleCollectionCellData else { return } - self.data = data - - let randomInt = Int.random(in: 0..<6) - - var color: UIColor = .systemBlue - - switch randomInt { - case 0: color = .systemBlue - case 1: color = .systemRed - case 2: color = .systemGray - case 3: color = .systemGreen - case 4: color = .systemYellow - case 5: color = .systemOrange - default: break - } - - imageButton?.layer.backgroundColor = color.cgColor - imageButton?.fillColor = color - } - - @IBAction func buttonClickAction(_ sender: Any) { - data?.clickCallback?() - } -} diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.xib b/Example/ContainerControllerSwift/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.xib deleted file mode 100644 index 805ebd1..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.xib +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.swift b/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.swift deleted file mode 100644 index c836a53..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// ExampleHeaderGripView.swift -// GTDriver -// -// Created by mrustaa on 16/01/2020. -// Copyright © 2020 mrustaa. All rights reserved. -// - -import UIKit - -class ExampleFooterButtonView: XibView { - - var buttonClickCallback: (() -> Void)? - - // MARK: - IBOutlets - - @IBOutlet public weak var separatorView: UIView? - @IBOutlet weak var separatorHeight: NSLayoutConstraint? - - override func loadedFromNib() { - separatorHeight?.constant = 0.5 - separatorView?.alpha = 1.0 - } - - @IBAction func buttonClickAction(_ sender: Any) { - buttonClickCallback?() - } -} diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.xib b/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.xib deleted file mode 100644 index 2255cef..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.xib +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift b/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift deleted file mode 100644 index 4f841b7..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// ExampleHeaderGripView.swift -// GTDriver -// -// Created by mrustaa on 16/01/2020. -// Copyright © 2020 mrustaa. All rights reserved. -// - -import UIKit - -class ExampleHeaderGripView: XibView { - - var searchBarBeginEditingCallback: (() -> Void)? - var searchBarCancelButtonClickedCallback: (() -> Void)? - - // MARK: - IBOutlets - - @IBOutlet public weak var separatorView: UIView? - @IBOutlet weak var separatorHeight: NSLayoutConstraint? - - override func loadedFromNib() { - separatorHeight?.constant = 0.5 - separatorView?.alpha = 0.0 - - - } - -} diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib b/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib deleted file mode 100644 index 98e9abd..0000000 --- a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/headerShadow.png b/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/headerShadow.png deleted file mode 100644 index 474c2be5794874fad04797aff0dba40c7a15a6ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17393 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 diff --git a/Example/ContainerControllerSwift/Framework/DesignableViews/DesignButton.swift b/Example/ContainerControllerSwift/Framework/DesignableViews/DesignButton.swift deleted file mode 100644 index 70d7004..0000000 --- a/Example/ContainerControllerSwift/Framework/DesignableViews/DesignButton.swift +++ /dev/null @@ -1,134 +0,0 @@ - - -import UIKit - -@IBDesignable -class DesignButton: UIButton { - - @IBInspectable var hideAnimation: Bool = true - - @IBInspectable var fillColor: UIColor = .clear - - @IBInspectable var gradientColor: UIColor? - @IBInspectable var gradientOffset: CGPoint = CGPoint(x: 0, y: 1) - - @IBInspectable var cornerRadius: CGFloat = 0.0 - - @IBInspectable var shadowColor: UIColor = .clear - @IBInspectable var shadowOffset: CGSize = CGSize.zero - @IBInspectable var shadowRadius: CGFloat = 0.0 - @IBInspectable var shadowOpacity: CGFloat = 0.0 - - @IBInspectable var borderColor: UIColor = .clear - @IBInspectable var borderWidth: CGFloat = 0.0 - - override func draw(_ rect: CGRect) { - - if let gradientColor = gradientColor { - - let glayer = CAGradientLayer() - glayer.frame = bounds - glayer.colors = [fillColor.cgColor, gradientColor.cgColor] - glayer.startPoint = CGPoint.zero - glayer.endPoint = gradientOffset - glayer.cornerRadius = radius() - layer.insertSublayer(glayer, at: 0) - - } else { - layer.backgroundColor = fillColor.cgColor - } - - layer.cornerRadius = radius() - - layer.shadowOffset = shadowOffset - layer.shadowOpacity = Float(shadowOpacity / 10.0) - layer.shadowRadius = shadowRadius - layer.shadowColor = shadowColor.cgColor - - layer.borderColor = borderColor.cgColor - layer.borderWidth = borderWidth - } - - override var isSelected: Bool { - didSet { - super.isSelected = isSelected - } - } - - override var isHighlighted: Bool { - didSet { - // super.isHighlighted = isHighlighted - } - } - - override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool { - selectedLayer(show: true) - return super.beginTracking(touch, with: event) - } - - override func continueTracking(_ touch: UITouch, with event: UIEvent?) -> Bool { - let point = touch.location(in: self) - let someFrame = bounds - let highlighted = someFrame.contains(point) - selectedLayer(show: highlighted) - return super.continueTracking(touch, with: event) - } - - override func endTracking(_ touch: UITouch?, with event: UIEvent?) { - selectedLayer(show: false) - super.endTracking(touch, with: event) - } - - override func cancelTracking(with event: UIEvent?) { - selectedLayer(show: false) - super.cancelTracking(with: event) - } - - func radius() -> CGFloat { - let minSize = min(frame.size.width, frame.size.height) - let radius = ((cornerRadius < 0) ? (minSize / 2) : cornerRadius) - return radius - } - - func selectedLayer(show: Bool) { - - func selectAnimationHide(show: Bool) { - if show { - alpha = 0.5 - } else { - UIView.animate(withDuration: 0.35, animations: { - self.alpha = 1 - }) - } - } - - func selectAnimationShadow(show: Bool) { - let tag = 1 - let view = viewWithTag(tag) - if show { - if view == nil { - let view = UIView(frame: bounds) - view.backgroundColor = UIColor.init(white: 0.0, alpha: 0.2) - view.tag = tag - view.layer.cornerRadius = radius() - addSubview(view) - } - } else { - if let view = view { - UIView.animate(withDuration: 0.35, animations: { - view.alpha = 0 - }) { (fin: Bool) in - view.removeFromSuperview() - } - } - } - } - - if hideAnimation { - selectAnimationHide(show: show) - } else { - selectAnimationShadow(show: show) - } - - } -} diff --git a/Example/ContainerControllerSwift/Framework/DesignableViews/DesignView.swift b/Example/ContainerControllerSwift/Framework/DesignableViews/DesignView.swift deleted file mode 100644 index 71e1f08..0000000 --- a/Example/ContainerControllerSwift/Framework/DesignableViews/DesignView.swift +++ /dev/null @@ -1,73 +0,0 @@ - - -import UIKit - -@IBDesignable -class DesignView: UIView { - - @IBInspectable var fillColor: UIColor = .clear - - //MARK: - Gradient - - @IBInspectable var gradientColor: UIColor? - @IBInspectable var gradientColor2: UIColor? - @IBInspectable var gradientColor3: UIColor? - @IBInspectable var gradientStartPoint: CGPoint = CGPoint.zero - @IBInspectable var gradientOffset: CGPoint = CGPoint(x: 0, y: 1) - - //MARK: - Shadow - - @IBInspectable var shadowColor: UIColor = .clear - @IBInspectable var shadowOffset: CGSize = CGSize.zero - @IBInspectable var shadowRadius: CGFloat = 0.0 - @IBInspectable var shadowOpacity: CGFloat = 0.0 - - //MARK: - Radius - - @IBInspectable var cornerRadius: CGFloat = 0.0 - - //MARK: - Border - - @IBInspectable var borderColor: UIColor = .clear - @IBInspectable var borderWidth: CGFloat = 0.0 - - override func draw(_ rect: CGRect) { - - if let gradientColor = gradientColor { - - var colors: [CGColor] = [] - colors.append(fillColor.cgColor) - colors.append(gradientColor.cgColor) - if let gradientColor2 = gradientColor2 { colors.append(gradientColor2.cgColor) } - if let gradientColor3 = gradientColor3 { colors.append(gradientColor3.cgColor) } - - let glayer = CAGradientLayer() - glayer.frame = bounds - glayer.colors = colors - glayer.startPoint = gradientStartPoint - glayer.endPoint = gradientOffset - glayer.cornerRadius = radius() - layer.insertSublayer(glayer, at: 0) - - } else { - layer.backgroundColor = fillColor.cgColor - } - - layer.cornerRadius = radius() - - layer.shadowOffset = shadowOffset - layer.shadowOpacity = Float(shadowOpacity / 10.0) - layer.shadowRadius = shadowRadius - layer.shadowColor = shadowColor.cgColor - - layer.borderColor = borderColor.cgColor - layer.borderWidth = borderWidth - } - - func radius() -> CGFloat { - let minSize = min(width, height) - let radius = ((cornerRadius < 0) ? (minSize / 2) : cornerRadius) - return radius - } - -} diff --git a/Example/ContainerControllerSwift/Framework/LoadNib/StoryboardController.swift b/Example/ContainerControllerSwift/Framework/LoadNib/StoryboardController.swift deleted file mode 100644 index 94fbfa2..0000000 --- a/Example/ContainerControllerSwift/Framework/LoadNib/StoryboardController.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// StoryboardController.swift -// PatternsSwift -// -// Created by mrustaa on 20/04/2020. -// Copyright © 2020 mrustaa. All rights reserved. -// - -import UIKit - -@IBDesignable -class StoryboardController: UIViewController { - - class func instantiate() -> UIViewController { - return fromStoryboardController() - } - - class func fromStoryboardController() -> UIViewController { - let className = String(describing: self) - - let storyboard = UIStoryboard.init(name: className, bundle: nil) - -// if let initialViewController = storyboard.instantiateInitialViewController() { -// return initialViewController -// } else { -// fatalError("Can't initialize view controller \(self)") -// } - - return storyboard.instantiateViewController(withIdentifier: className) - } -} diff --git a/Example/ContainerControllerSwift/Framework/LoadNib/XibView.swift b/Example/ContainerControllerSwift/Framework/LoadNib/XibView.swift deleted file mode 100644 index b90f9be..0000000 --- a/Example/ContainerControllerSwift/Framework/LoadNib/XibView.swift +++ /dev/null @@ -1,99 +0,0 @@ -// -// XibView.swift -// PatternsSwift -// -// Created by mrustaa on 19/04/2020. -// Copyright © 2020 mrustaa. All rights reserved. -// - -import UIKit - -class XibView: UIView { - - // MARK: - Properties - - public weak var contentView: UIView? - - // MARK: - Initialize - - required public init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - contentView = fromNib() - loadedFromNib() - } - - public init() { - super.init(frame: CGRect.zero) - contentView = fromNib() - frame = contentView?.frame ?? frame - loadedFromNib() - } - - // MARK: - Postflight - - open func loadedFromNib() { - - } - - // MARK: - Load Nib - - func fromNibWithoutConstraints() -> UIView? { - guard let contentView = Bundle(for: type(of: self)).loadNibNamed(String(describing: type(of: self)), owner: self, options: nil)?.first as? UIView else { - return nil - } - - contentView.translatesAutoresizingMaskIntoConstraints = false - addSubview(contentView) - - return contentView - } - - func fromNib() -> UIView? { - guard let contentView = fromNibWithoutConstraints() else { return nil } - - let bottomConstraint = NSLayoutConstraint( - item: contentView, - attribute: NSLayoutConstraint.Attribute.bottom, - relatedBy: NSLayoutConstraint.Relation.equal, - toItem: self, - attribute: NSLayoutConstraint.Attribute.bottom, - multiplier: 1, - constant: 0 - ) - - let trailingConstraint = NSLayoutConstraint( - item: contentView, - attribute: NSLayoutConstraint.Attribute.trailing, - relatedBy: NSLayoutConstraint.Relation.equal, - toItem: self, - attribute: NSLayoutConstraint.Attribute.trailing, - multiplier: 1, - constant: 0 - ) - - let topConstraint = NSLayoutConstraint( - item: contentView, - attribute: NSLayoutConstraint.Attribute.top, - relatedBy: NSLayoutConstraint.Relation.equal, - toItem: self, - attribute: NSLayoutConstraint.Attribute.top, - multiplier: 1, - constant: 0 - ) - - let leadingConstraint = NSLayoutConstraint( - item: contentView, - attribute: NSLayoutConstraint.Attribute.leading, - relatedBy: NSLayoutConstraint.Relation.equal, - toItem: self, - attribute: NSLayoutConstraint.Attribute.leading, - multiplier: 1, - constant: 0 - ) - - addConstraints([bottomConstraint, trailingConstraint, topConstraint, leadingConstraint]) - - return contentView - } - -} diff --git a/Example/ContainerControllerSwift/Framework/Utils/Color.swift b/Example/ContainerControllerSwift/Framework/Utils/Color.swift deleted file mode 100644 index f8e7500..0000000 --- a/Example/ContainerControllerSwift/Framework/Utils/Color.swift +++ /dev/null @@ -1,59 +0,0 @@ - -import UIKit - -extension UIColor { - var redValue: CGFloat{ return CIColor(color: self).red } - var greenValue: CGFloat{ return CIColor(color: self).green } - var blueValue: CGFloat{ return CIColor(color: self).blue } - var alphaValue: CGFloat{ return CIColor(color: self).alpha } -} - -class Colors { - - class func rgba( _ red: CGFloat, _ green: CGFloat, _ blue: CGFloat, _ alpha: CGFloat) -> UIColor { - return UIColor(red: red / 255, green: green / 255, blue: blue / 255, alpha: alpha) - } - - class func rgb( _ red: CGFloat, _ green: CGFloat, _ blue: CGFloat) -> UIColor { - return rgba(red, green, blue, 1) - } - - class func grayLevel(_ gray: CGFloat) -> UIColor { - return rgb(gray * 255, gray * 255, gray * 255) - } - - class func blackAlpha(_ alpha: CGFloat) -> UIColor { - return rgba(0, 0, 0, alpha) - } - - // MARK: - Properties - - static public let lightGray = blackAlpha(0.1) - static public let slightlyDark = blackAlpha(0.3) - static public let halfBlack = blackAlpha(0.5) - - static public let black = grayLevel(0) // 0 % - static public let gray = grayLevel(127) // 49 % - static public let lightInactiveGray = grayLevel(178) // 69 % - static public let silver = grayLevel(229) // 89 % - static public let inactiveGray = grayLevel(246) // 96 % - static public let white = grayLevel(255) // 100 % - - static public let transparentGray = rgba(225, 225, 225, 0.3) - static public let lightOrange = rgba(255, 105, 0, 0.1) - - static public let red = rgb(255, 59, 48) - static public let blue = rgb(44, 174, 233) - static public let yellow = rgb(254, 219, 6) - static public let orange = rgb(255, 105, 0) - static public let purple = rgb(128, 0, 128) - static public let gold = rgb(226, 201, 127) - static public let beige = rgb(245, 245, 220) - static public let brand = rgb(255, 105, 0) - static public let approveGreen = rgb(49, 183, 0) - static public let darkBlue = rgb(74, 144, 226) - static public let semidarkBlue = rgb(0, 107, 202) - static public let darkGray = rgb(142, 142, 147) - static public let lightYellow = rgb(254, 229, 6) - -} diff --git a/Example/ContainerControllerSwift/Framework/Utils/UIView+Positioning.swift b/Example/ContainerControllerSwift/Framework/Utils/UIView+Positioning.swift deleted file mode 100755 index 3d5f091..0000000 --- a/Example/ContainerControllerSwift/Framework/Utils/UIView+Positioning.swift +++ /dev/null @@ -1,193 +0,0 @@ -// -// UIView+Positioning.swift -// -// Created by Shai Mishali on 1/19/15. -// Copyright (c) 2015 Shai Mishali. All rights reserved. -// - -import UIKit - -public extension UIView { - - // MARK: - Basic Properties - - /// X Axis value of UIView. - var x: CGFloat { - set { self.frame = CGRect(x: _pixelIntegral(newValue), - y: self.y, - width: self.width, - height: self.height) - } - get { return self.frame.origin.x } - } - - /// Y Axis value of UIView. - var y: CGFloat { - set { self.frame = CGRect(x: self.x, - y: _pixelIntegral(newValue), - width: self.width, - height: self.height) - } - get { return self.frame.origin.y } - } - - /// Width of view. - var width: CGFloat { - set { self.frame = CGRect(x: self.x, - y: self.y, - width: _pixelIntegral(newValue), - height: self.height) - } - get { return self.frame.size.width } - } - - /// Height of view. - var height: CGFloat { - set { self.frame = CGRect(x: self.x, - y: self.y, - width: self.width, - height: _pixelIntegral(newValue)) - } - get { return self.frame.size.height } - } - - // MARK: - Origin and Size - - /// View's Origin point. - var origin: CGPoint { - set { self.frame = CGRect(x: _pixelIntegral(newValue.x), - y: _pixelIntegral(newValue.y), - width: self.width, - height: self.height) - } - get { return self.frame.origin } - } - - /// View's size. - var size: CGSize { - set { self.frame = CGRect(x: self.x, - y: self.y, - width: _pixelIntegral(newValue.width), - height: _pixelIntegral(newValue.height)) - } - get { return self.frame.size } - } - - // MARK: - Extra Properties - - /// View's right side (x + width). - var right: CGFloat { - set { self.x = newValue - self.width } - get { return self.x + self.width } - } - - /// View's bottom (y + height). - var bottom: CGFloat { - set { self.y = newValue - self.height } - get { return self.y + self.height } - } - - /// View's top (y). - var top: CGFloat { - set { self.y = newValue } - get { return self.y } - } - - /// View's left side (x). - var left: CGFloat { - set { self.x = newValue } - get { return self.x } - } - - /// View's center X value (center.x). - var centerX: CGFloat { - set { self.center = CGPoint(x: newValue, y: self.centerY) } - get { return self.center.x } - } - - /// View's center Y value (center.y). - var centerY: CGFloat { - set { self.center = CGPoint(x: self.centerX, y: newValue) } - get { return self.center.y } - } - - /// Last subview on X Axis. - var lastSubviewOnX: UIView? { - return self.subviews.reduce(UIView(frame: .zero)) { - return $1.x > $0.x ? $1 : $0 - } - } - - /// Last subview on Y Axis. - var lastSubviewOnY: UIView? { - return self.subviews.reduce(UIView(frame: .zero)) { - return $1.y > $0.y ? $1 : $0 - } - } - - // MARK: - Bounds Methods - - /// X value of bounds (bounds.origin.x). - var boundsX: CGFloat { - set { self.bounds = CGRect(x: _pixelIntegral(newValue), - y: self.boundsY, - width: self.boundsWidth, - height: self.boundsHeight) - } - get { return self.bounds.origin.x } - } - - /// Y value of bounds (bounds.origin.y). - var boundsY: CGFloat { - set { self.frame = CGRect(x: self.boundsX, - y: _pixelIntegral(newValue), - width: self.boundsWidth, - height: self.boundsHeight) - } - get { return self.bounds.origin.y } - } - - /// Width of bounds (bounds.size.width). - var boundsWidth: CGFloat { - set { self.frame = CGRect(x: self.boundsX, - y: self.boundsY, - width: _pixelIntegral(newValue), - height: self.boundsHeight) - } - get { return self.bounds.size.width } - } - - /// Height of bounds (bounds.size.height). - var boundsHeight: CGFloat { - set { self.frame = CGRect(x: self.boundsX, - y: self.boundsY, - width: self.boundsWidth, - height: _pixelIntegral(newValue)) - } - get { return self.bounds.size.height } - } - - // MARK: - Useful Methods - - /// Center view to it's parent view. -// func centerToParent() { -// guard let superview = self.superview else { return } -// -// switch UIApplication.shared.statusBarOrientation { -// case .landscapeLeft, .landscapeRight: -// self.origin = CGPoint(x: (superview.height / 2) - (self.width / 2), -// y: (superview.width / 2) - (self.height / 2)) -// case .portrait, .portraitUpsideDown: -// self.origin = CGPoint(x: (superview.width / 2) - (self.width / 2), -// y: (superview.height / 2) - (self.height / 2)) -// case .unknown: -// return -// } -// } - - // MARK: - Private Methods - fileprivate func _pixelIntegral(_ pointValue: CGFloat) -> CGFloat { - let scale = UIScreen.main.scale - return (round(pointValue * scale) / scale) - } -} diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 7026cd1..0000000 --- a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom": "iphone", - "filename" : "appIcon-20@2x.png", - "scale": "2x" - }, - { - "size" : "20x20", - "idiom": "iphone", - "filename" : "appIcon-20@3x.png", - "scale": "3x" - }, - { - "size" : "20x20", - "idiom": "ipad", - "filename" : "appIcon-20.png", - "scale": "1x" - }, - { - "size" : "20x20", - "idiom": "ipad", - "filename" : "appIcon-20@2x.png", - "scale": "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "appIcon-29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "appIcon-29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "appIcon-40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "appIcon-40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "appIcon-60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "appIcon-60@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "appIcon-29.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "appIcon-29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "appIcon-40.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "appIcon-40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "appIcon-76.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "appIcon-76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "appIcon-83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "appIcon-1024.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-1024.png b/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-1024.png deleted file mode 100644 index 9a91a2a01246fa9e28a56b0e63668e35dc602920..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414061 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�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