diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/ContainerController.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/ContainerController.xcscheme
new file mode 100644
index 0000000..e213855
--- /dev/null
+++ b/.swiftpm/xcode/xcshareddata/xcschemes/ContainerController.xcscheme
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ContainerControllerSwift.podspec b/ContainerController.podspec
similarity index 73%
rename from ContainerControllerSwift.podspec
rename to ContainerController.podspec
index be7397d..93b2513 100644
--- a/ContainerControllerSwift.podspec
+++ b/ContainerController.podspec
@@ -7,8 +7,8 @@
#
Pod::Spec.new do |s|
- s.name = 'ContainerControllerSwift'
- s.version = '1.1.4'
+ s.name = 'ContainerController'
+ s.version = '2.0.0'
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.
@@ -28,20 +28,11 @@ TODO: Add long description of the pod here.
s.author = { 'mrustaa' => 'rustamburger@gmail.com' }
s.source = { :git => 'https://github.com/mrustaa/ContainerController.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/'
- s.swift_version = "5.0"
+ s.swift_version = "5.2"
- # s.ios.deployment_target = '12.0'
- s.platform = :ios, "12.0"
+ # s.ios.deployment_target = '13.0'
+ s.platform = :ios, "13.0"
s.source_files = 'Sources/**/*.{swift}'
- s.framework = "UIKit"
- # s.ios.framework = 'UIKit'
- # s.resource_bundles = {
- # 'ContainerControllerSwift' => ['ContainerControllerSwift/Assets/*.png']
- # }
-
- # s.public_header_files = 'Pod/Classes/**/*.h'
- # s.frameworks = 'UIKit', 'MapKit'
- # s.dependency 'AFNetworking', '~> 2.3'
end
diff --git a/ContainerController.xcworkspace/contents.xcworkspacedata b/ContainerController.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..5fb1973
--- /dev/null
+++ b/ContainerController.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/Example/ContainerControllerSwift.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ContainerController.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from Example/ContainerControllerSwift.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to ContainerController.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/ContainerControllerSwift.xcworkspace b/ContainerControllerSwift.xcworkspace
deleted file mode 100644
index 8f5a76b..0000000
Binary files a/ContainerControllerSwift.xcworkspace and /dev/null differ
diff --git a/Example/Podfile b/Example/Podfile
deleted file mode 100644
index a0d02ad..0000000
--- a/Example/Podfile
+++ /dev/null
@@ -1,10 +0,0 @@
-use_frameworks!
-
-target 'ContainerControllerSwift_Example' do
- pod 'ContainerControllerSwift'
-
- target 'ContainerControllerSwift_Tests' do
- inherit! :search_paths
-
- end
-end
diff --git a/Example/Podfile.lock b/Example/Podfile.lock
deleted file mode 100644
index a303569..0000000
--- a/Example/Podfile.lock
+++ /dev/null
@@ -1,16 +0,0 @@
-PODS:
- - ContainerControllerSwift (1.0.0)
-
-DEPENDENCIES:
- - ContainerControllerSwift (from `../`)
-
-EXTERNAL SOURCES:
- ContainerControllerSwift:
- :path: "../"
-
-SPEC CHECKSUMS:
- ContainerControllerSwift: 784bd547f936a51b956788cdd23869344e638119
-
-PODFILE CHECKSUM: 5f9e7bdcf65f6b742444242add916867543ae8c0
-
-COCOAPODS: 1.9.3
diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock
deleted file mode 100644
index a303569..0000000
--- a/Example/Pods/Manifest.lock
+++ /dev/null
@@ -1,16 +0,0 @@
-PODS:
- - ContainerControllerSwift (1.0.0)
-
-DEPENDENCIES:
- - ContainerControllerSwift (from `../`)
-
-EXTERNAL SOURCES:
- ContainerControllerSwift:
- :path: "../"
-
-SPEC CHECKSUMS:
- ContainerControllerSwift: 784bd547f936a51b956788cdd23869344e638119
-
-PODFILE CHECKSUM: 5f9e7bdcf65f6b742444242add916867543ae8c0
-
-COCOAPODS: 1.9.3
diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj
deleted file mode 100644
index 8ab8f7a..0000000
--- a/Example/Pods/Pods.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,863 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- 00890DAA8DA6F37A5A9A08D12C28DB0B /* ContainerControllerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D9CBEFF11CE7640EEA244C26DEB209EE /* ContainerControllerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1243F193971FB6A9D10E4A6DFFF1A81C /* Pods-ContainerControllerSwift_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 32E7EA3D3C16ECD90748D85102DE9F48 /* Pods-ContainerControllerSwift_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 46ACEFC3249021CA00FAAD43 /* ContainerTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFB1249021C900FAAD43 /* ContainerTypes.swift */; };
- 46ACEFC4249021CA00FAAD43 /* TableAdapterCellData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFB3249021C900FAAD43 /* TableAdapterCellData.swift */; };
- 46ACEFC5249021CA00FAAD43 /* TableAdapterItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFB4249021C900FAAD43 /* TableAdapterItem.swift */; };
- 46ACEFC6249021CA00FAAD43 /* TableAdapterCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFB5249021C900FAAD43 /* TableAdapterCell.swift */; };
- 46ACEFC7249021CA00FAAD43 /* TableAdapterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFB6249021C900FAAD43 /* TableAdapterView.swift */; };
- 46ACEFC8249021CA00FAAD43 /* TableAdapterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFB7249021C900FAAD43 /* TableAdapterTypes.swift */; };
- 46ACEFC9249021CA00FAAD43 /* ContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFB8249021CA00FAAD43 /* ContainerView.swift */; };
- 46ACEFCA249021CA00FAAD43 /* ContainerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFB9249021CA00FAAD43 /* ContainerController.swift */; };
- 46ACEFCB249021CA00FAAD43 /* ContainerLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFBA249021CA00FAAD43 /* ContainerLayout.swift */; };
- 46ACEFCC249021CA00FAAD43 /* CollectionAdapterItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFBC249021CA00FAAD43 /* CollectionAdapterItem.swift */; };
- 46ACEFCD249021CA00FAAD43 /* CollectionAdapterCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFBD249021CA00FAAD43 /* CollectionAdapterCell.swift */; };
- 46ACEFCE249021CA00FAAD43 /* CollectionAdapterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFBE249021CA00FAAD43 /* CollectionAdapterView.swift */; };
- 46ACEFCF249021CA00FAAD43 /* CollectionAdapterCellData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFBF249021CA00FAAD43 /* CollectionAdapterCellData.swift */; };
- 46ACEFD0249021CA00FAAD43 /* CollectionAdapterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFC0249021CA00FAAD43 /* CollectionAdapterTypes.swift */; };
- 46ACEFD1249021CA00FAAD43 /* ContainerControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFC1249021CA00FAAD43 /* ContainerControllerDelegate.swift */; };
- 46ACEFD2249021CA00FAAD43 /* ContainerDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ACEFC2249021CA00FAAD43 /* ContainerDevice.swift */; };
- 6832A37E4BE96FFAB256437366565B3A /* Pods-ContainerControllerSwift_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C492E15579178E6EFA4F7D5E4FD837E3 /* Pods-ContainerControllerSwift_Example-dummy.m */; };
- 6BA9901BD72359C688E66F3F7F4FCDD5 /* Pods-ContainerControllerSwift_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F6EBDD597E9CC4639BD0FBF04762179D /* Pods-ContainerControllerSwift_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 924134AF593E128FA35D2DB4F482484E /* ContainerControllerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EEA0EC0D79861379FB2B1874207A67A /* ContainerControllerSwift-dummy.m */; };
- 92EB6A1534372D92475E0C3060E06BD8 /* Pods-ContainerControllerSwift_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CE04B24AA978789CDFAA23C3FF9D294 /* Pods-ContainerControllerSwift_Tests-dummy.m */; };
- B9206B2E0133EE4CAEDE0F4D744714E5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
- CDB05F59A9B358A3E5C4C2DFE8325017 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
- FF5ED999C368088A1250700BBBCF4C41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 0F48CBB7540AE6469B989CFD7E5E8088 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = CE197115FA4CB443FE4917D7ACF96849;
- remoteInfo = "Pods-ContainerControllerSwift_Example";
- };
- 65FC883BECB76655B966D1157DC123BC /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 5DA187609B115AA5A2E3705A1CC63904;
- remoteInfo = ContainerControllerSwift;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- 06196A9E7A7180DCFA9E0A32364BF2EC /* Pods-ContainerControllerSwift_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ContainerControllerSwift_Example-acknowledgements.plist"; sourceTree = ""; };
- 06B6F2A2E669185755A8E3A5F313DA00 /* Pods-ContainerControllerSwift_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ContainerControllerSwift_Example.modulemap"; sourceTree = ""; };
- 122783B233FC53518106B017B9E57796 /* Pods-ContainerControllerSwift_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ContainerControllerSwift_Tests.modulemap"; sourceTree = ""; };
- 13296F8F89440216D156B1EF58BBD3FA /* Pods-ContainerControllerSwift_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ContainerControllerSwift_Example-acknowledgements.markdown"; sourceTree = ""; };
- 148A1CC4CCA9A45E6679C0483EC257F1 /* Pods_ContainerControllerSwift_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ContainerControllerSwift_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 17B800897A944FAFD0416DC3C8A2B9CD /* ContainerControllerSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ContainerControllerSwift.debug.xcconfig; sourceTree = ""; };
- 23B6CA2F0075DF1F0D43741B3188D49C /* ContainerControllerSwift.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = ContainerControllerSwift.podspec; sourceTree = ""; tabWidth = 2; };
- 31C6D8CE52D9D44CFE3381837377CCE7 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; };
- 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
- 32E7EA3D3C16ECD90748D85102DE9F48 /* Pods-ContainerControllerSwift_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ContainerControllerSwift_Tests-umbrella.h"; sourceTree = ""; };
- 34B99A079CA33F3CFA10293C249BD2CE /* Pods-ContainerControllerSwift_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ContainerControllerSwift_Example-Info.plist"; sourceTree = ""; };
- 3F0346DDED41D0AB543AE2537D7539D6 /* ContainerControllerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ContainerControllerSwift-Info.plist"; sourceTree = ""; };
- 46ACEFB1249021C900FAAD43 /* ContainerTypes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ContainerTypes.swift; path = Sources/ContainerController/ContainerTypes.swift; sourceTree = ""; };
- 46ACEFB3249021C900FAAD43 /* TableAdapterCellData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableAdapterCellData.swift; sourceTree = ""; };
- 46ACEFB4249021C900FAAD43 /* TableAdapterItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableAdapterItem.swift; sourceTree = ""; };
- 46ACEFB5249021C900FAAD43 /* TableAdapterCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableAdapterCell.swift; sourceTree = ""; };
- 46ACEFB6249021C900FAAD43 /* TableAdapterView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableAdapterView.swift; sourceTree = ""; };
- 46ACEFB7249021C900FAAD43 /* TableAdapterTypes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableAdapterTypes.swift; sourceTree = ""; };
- 46ACEFB8249021CA00FAAD43 /* ContainerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ContainerView.swift; path = Sources/ContainerController/ContainerView.swift; sourceTree = ""; };
- 46ACEFB9249021CA00FAAD43 /* ContainerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ContainerController.swift; path = Sources/ContainerController/ContainerController.swift; sourceTree = ""; };
- 46ACEFBA249021CA00FAAD43 /* ContainerLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ContainerLayout.swift; path = Sources/ContainerController/ContainerLayout.swift; sourceTree = ""; };
- 46ACEFBC249021CA00FAAD43 /* CollectionAdapterItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionAdapterItem.swift; sourceTree = ""; };
- 46ACEFBD249021CA00FAAD43 /* CollectionAdapterCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionAdapterCell.swift; sourceTree = ""; };
- 46ACEFBE249021CA00FAAD43 /* CollectionAdapterView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionAdapterView.swift; sourceTree = ""; };
- 46ACEFBF249021CA00FAAD43 /* CollectionAdapterCellData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionAdapterCellData.swift; sourceTree = ""; };
- 46ACEFC0249021CA00FAAD43 /* CollectionAdapterTypes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionAdapterTypes.swift; sourceTree = ""; };
- 46ACEFC1249021CA00FAAD43 /* ContainerControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ContainerControllerDelegate.swift; path = Sources/ContainerController/ContainerControllerDelegate.swift; sourceTree = ""; };
- 46ACEFC2249021CA00FAAD43 /* ContainerDevice.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ContainerDevice.swift; path = Sources/ContainerController/ContainerDevice.swift; sourceTree = ""; };
- 4EEA0EC0D79861379FB2B1874207A67A /* ContainerControllerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ContainerControllerSwift-dummy.m"; sourceTree = ""; };
- 4FAEEAC4BEF190DBB2A8F50DB74A5DC4 /* Pods-ContainerControllerSwift_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ContainerControllerSwift_Example-frameworks.sh"; sourceTree = ""; };
- 82F3FE4320C7E1306E9D6353343C0247 /* ContainerControllerSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ContainerControllerSwift.release.xcconfig; sourceTree = ""; };
- 88289C16D7EE3DABA481CCA2A23F6606 /* Pods_ContainerControllerSwift_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ContainerControllerSwift_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 89922BFA2A740F6B35D8B7F42EC3C4A6 /* Pods-ContainerControllerSwift_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ContainerControllerSwift_Example.release.xcconfig"; sourceTree = ""; };
- 9539933A3B21B34CCDEC71F036AEAE32 /* Pods-ContainerControllerSwift_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ContainerControllerSwift_Tests-Info.plist"; sourceTree = ""; };
- 9CE04B24AA978789CDFAA23C3FF9D294 /* Pods-ContainerControllerSwift_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ContainerControllerSwift_Tests-dummy.m"; sourceTree = ""; };
- 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; };
- A44F5E78625C75314837F442526B9F1F /* Pods-ContainerControllerSwift_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ContainerControllerSwift_Tests.debug.xcconfig"; sourceTree = ""; };
- C0064E8B7E1FC56F5599EFD271C67594 /* ContainerControllerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ContainerControllerSwift.modulemap; sourceTree = ""; };
- C492E15579178E6EFA4F7D5E4FD837E3 /* Pods-ContainerControllerSwift_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ContainerControllerSwift_Example-dummy.m"; sourceTree = ""; };
- CEB1B117C8448E026CC4FB019E982F9A /* Pods-ContainerControllerSwift_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ContainerControllerSwift_Example.debug.xcconfig"; sourceTree = ""; };
- D9CBEFF11CE7640EEA244C26DEB209EE /* ContainerControllerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ContainerControllerSwift-umbrella.h"; sourceTree = ""; };
- DC2C12BA62CAA053F2D5EACE4EB16224 /* Pods-ContainerControllerSwift_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ContainerControllerSwift_Tests-acknowledgements.plist"; sourceTree = ""; };
- E98D59B1404C0A19A30E36781DD5D960 /* Pods-ContainerControllerSwift_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ContainerControllerSwift_Tests.release.xcconfig"; sourceTree = ""; };
- E9DE29BE179AF9355EBAE638EC1B822E /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; };
- F6EBDD597E9CC4639BD0FBF04762179D /* Pods-ContainerControllerSwift_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ContainerControllerSwift_Example-umbrella.h"; sourceTree = ""; };
- F976F9D3CEF51D2530649D115424E24B /* ContainerControllerSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ContainerControllerSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- FBA1D95B18112DA3CB0425B90D7B3A8E /* ContainerControllerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ContainerControllerSwift-prefix.pch"; sourceTree = ""; };
- FD473075F7D1A26E61EFA3687E271F72 /* Pods-ContainerControllerSwift_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ContainerControllerSwift_Tests-acknowledgements.markdown"; sourceTree = ""; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 0B26A700BA689EF4AAF1267EB24D0DEE /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- CDB05F59A9B358A3E5C4C2DFE8325017 /* Foundation.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 29CBBA589A4FEB04C5A69211E237F2F3 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- FF5ED999C368088A1250700BBBCF4C41 /* Foundation.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 87DFEC96161434658D6641AFC953FF01 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- B9206B2E0133EE4CAEDE0F4D744714E5 /* Foundation.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 45C8004659775F1895928FA6FBC57949 /* Pods-ContainerControllerSwift_Tests */ = {
- isa = PBXGroup;
- children = (
- 122783B233FC53518106B017B9E57796 /* Pods-ContainerControllerSwift_Tests.modulemap */,
- FD473075F7D1A26E61EFA3687E271F72 /* Pods-ContainerControllerSwift_Tests-acknowledgements.markdown */,
- DC2C12BA62CAA053F2D5EACE4EB16224 /* Pods-ContainerControllerSwift_Tests-acknowledgements.plist */,
- 9CE04B24AA978789CDFAA23C3FF9D294 /* Pods-ContainerControllerSwift_Tests-dummy.m */,
- 9539933A3B21B34CCDEC71F036AEAE32 /* Pods-ContainerControllerSwift_Tests-Info.plist */,
- 32E7EA3D3C16ECD90748D85102DE9F48 /* Pods-ContainerControllerSwift_Tests-umbrella.h */,
- A44F5E78625C75314837F442526B9F1F /* Pods-ContainerControllerSwift_Tests.debug.xcconfig */,
- E98D59B1404C0A19A30E36781DD5D960 /* Pods-ContainerControllerSwift_Tests.release.xcconfig */,
- );
- name = "Pods-ContainerControllerSwift_Tests";
- path = "Target Support Files/Pods-ContainerControllerSwift_Tests";
- sourceTree = "";
- };
- 46ACEFB2249021C900FAAD43 /* ContainerTable */ = {
- isa = PBXGroup;
- children = (
- 46ACEFB3249021C900FAAD43 /* TableAdapterCellData.swift */,
- 46ACEFB4249021C900FAAD43 /* TableAdapterItem.swift */,
- 46ACEFB5249021C900FAAD43 /* TableAdapterCell.swift */,
- 46ACEFB6249021C900FAAD43 /* TableAdapterView.swift */,
- 46ACEFB7249021C900FAAD43 /* TableAdapterTypes.swift */,
- );
- name = ContainerTable;
- path = Sources/ContainerController/ContainerTable;
- sourceTree = "";
- };
- 46ACEFBB249021CA00FAAD43 /* ContainerCollection */ = {
- isa = PBXGroup;
- children = (
- 46ACEFBC249021CA00FAAD43 /* CollectionAdapterItem.swift */,
- 46ACEFBD249021CA00FAAD43 /* CollectionAdapterCell.swift */,
- 46ACEFBE249021CA00FAAD43 /* CollectionAdapterView.swift */,
- 46ACEFBF249021CA00FAAD43 /* CollectionAdapterCellData.swift */,
- 46ACEFC0249021CA00FAAD43 /* CollectionAdapterTypes.swift */,
- );
- name = ContainerCollection;
- path = Sources/ContainerController/ContainerCollection;
- sourceTree = "";
- };
- 60BF066757F56B86BB1CBE3EBB71A70A /* Support Files */ = {
- isa = PBXGroup;
- children = (
- C0064E8B7E1FC56F5599EFD271C67594 /* ContainerControllerSwift.modulemap */,
- 4EEA0EC0D79861379FB2B1874207A67A /* ContainerControllerSwift-dummy.m */,
- 3F0346DDED41D0AB543AE2537D7539D6 /* ContainerControllerSwift-Info.plist */,
- FBA1D95B18112DA3CB0425B90D7B3A8E /* ContainerControllerSwift-prefix.pch */,
- D9CBEFF11CE7640EEA244C26DEB209EE /* ContainerControllerSwift-umbrella.h */,
- 17B800897A944FAFD0416DC3C8A2B9CD /* ContainerControllerSwift.debug.xcconfig */,
- 82F3FE4320C7E1306E9D6353343C0247 /* ContainerControllerSwift.release.xcconfig */,
- );
- name = "Support Files";
- path = "Example/Pods/Target Support Files/ContainerControllerSwift";
- sourceTree = "";
- };
- 6B9DDE4E3E3580720626F12F6B2E2B70 /* Pod */ = {
- isa = PBXGroup;
- children = (
- 23B6CA2F0075DF1F0D43741B3188D49C /* ContainerControllerSwift.podspec */,
- 31C6D8CE52D9D44CFE3381837377CCE7 /* LICENSE */,
- E9DE29BE179AF9355EBAE638EC1B822E /* README.md */,
- );
- name = Pod;
- sourceTree = "";
- };
- 8901295C7648943D36EAE366B7418094 /* Development Pods */ = {
- isa = PBXGroup;
- children = (
- D256ACDF93D75076D78DD3E60EBAD22D /* ContainerControllerSwift */,
- );
- name = "Development Pods";
- sourceTree = "";
- };
- AD08DF81F074B50D1C61DC8265522D27 /* Pods-ContainerControllerSwift_Example */ = {
- isa = PBXGroup;
- children = (
- 06B6F2A2E669185755A8E3A5F313DA00 /* Pods-ContainerControllerSwift_Example.modulemap */,
- 13296F8F89440216D156B1EF58BBD3FA /* Pods-ContainerControllerSwift_Example-acknowledgements.markdown */,
- 06196A9E7A7180DCFA9E0A32364BF2EC /* Pods-ContainerControllerSwift_Example-acknowledgements.plist */,
- C492E15579178E6EFA4F7D5E4FD837E3 /* Pods-ContainerControllerSwift_Example-dummy.m */,
- 4FAEEAC4BEF190DBB2A8F50DB74A5DC4 /* Pods-ContainerControllerSwift_Example-frameworks.sh */,
- 34B99A079CA33F3CFA10293C249BD2CE /* Pods-ContainerControllerSwift_Example-Info.plist */,
- F6EBDD597E9CC4639BD0FBF04762179D /* Pods-ContainerControllerSwift_Example-umbrella.h */,
- CEB1B117C8448E026CC4FB019E982F9A /* Pods-ContainerControllerSwift_Example.debug.xcconfig */,
- 89922BFA2A740F6B35D8B7F42EC3C4A6 /* Pods-ContainerControllerSwift_Example.release.xcconfig */,
- );
- name = "Pods-ContainerControllerSwift_Example";
- path = "Target Support Files/Pods-ContainerControllerSwift_Example";
- sourceTree = "";
- };
- B103FD8CE2C5EFBC945915C7DF18E4C2 /* Targets Support Files */ = {
- isa = PBXGroup;
- children = (
- AD08DF81F074B50D1C61DC8265522D27 /* Pods-ContainerControllerSwift_Example */,
- 45C8004659775F1895928FA6FBC57949 /* Pods-ContainerControllerSwift_Tests */,
- );
- name = "Targets Support Files";
- sourceTree = "";
- };
- C0834CEBB1379A84116EF29F93051C60 /* iOS */ = {
- isa = PBXGroup;
- children = (
- 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */,
- );
- name = iOS;
- sourceTree = "";
- };
- CB7E3194DE1F57EE61854BAC0794E423 /* Products */ = {
- isa = PBXGroup;
- children = (
- F976F9D3CEF51D2530649D115424E24B /* ContainerControllerSwift.framework */,
- 148A1CC4CCA9A45E6679C0483EC257F1 /* Pods_ContainerControllerSwift_Example.framework */,
- 88289C16D7EE3DABA481CCA2A23F6606 /* Pods_ContainerControllerSwift_Tests.framework */,
- );
- name = Products;
- sourceTree = "";
- };
- CF1408CF629C7361332E53B88F7BD30C = {
- isa = PBXGroup;
- children = (
- 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
- 8901295C7648943D36EAE366B7418094 /* Development Pods */,
- D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */,
- CB7E3194DE1F57EE61854BAC0794E423 /* Products */,
- B103FD8CE2C5EFBC945915C7DF18E4C2 /* Targets Support Files */,
- );
- sourceTree = "";
- };
- D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- C0834CEBB1379A84116EF29F93051C60 /* iOS */,
- );
- name = Frameworks;
- sourceTree = "";
- };
- D256ACDF93D75076D78DD3E60EBAD22D /* ContainerControllerSwift */ = {
- isa = PBXGroup;
- children = (
- 46ACEFBB249021CA00FAAD43 /* ContainerCollection */,
- 46ACEFB2249021C900FAAD43 /* ContainerTable */,
- 46ACEFB9249021CA00FAAD43 /* ContainerController.swift */,
- 46ACEFC1249021CA00FAAD43 /* ContainerControllerDelegate.swift */,
- 46ACEFC2249021CA00FAAD43 /* ContainerDevice.swift */,
- 46ACEFBA249021CA00FAAD43 /* ContainerLayout.swift */,
- 46ACEFB1249021C900FAAD43 /* ContainerTypes.swift */,
- 46ACEFB8249021CA00FAAD43 /* ContainerView.swift */,
- 6B9DDE4E3E3580720626F12F6B2E2B70 /* Pod */,
- 60BF066757F56B86BB1CBE3EBB71A70A /* Support Files */,
- );
- name = ContainerControllerSwift;
- path = ../..;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- 3209EBB5E1EB3F096D8CE62F865CA233 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 6BA9901BD72359C688E66F3F7F4FCDD5 /* Pods-ContainerControllerSwift_Example-umbrella.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 3E843AF4B00F392A665D58A47EBAE9A3 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 1243F193971FB6A9D10E4A6DFFF1A81C /* Pods-ContainerControllerSwift_Tests-umbrella.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- B6589F5E693B0F599EE61663D53BFC0B /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 00890DAA8DA6F37A5A9A08D12C28DB0B /* ContainerControllerSwift-umbrella.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- 1169D43D75A981EA7C2522A5530B2CFF /* Pods-ContainerControllerSwift_Tests */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 939D4C7ED440B6E8B7F08A931528D9DC /* Build configuration list for PBXNativeTarget "Pods-ContainerControllerSwift_Tests" */;
- buildPhases = (
- 3E843AF4B00F392A665D58A47EBAE9A3 /* Headers */,
- 24299AA297D0F82D7388343ADD59E8E6 /* Sources */,
- 0B26A700BA689EF4AAF1267EB24D0DEE /* Frameworks */,
- A32F56004ACFE7CFCCA7EAAE9F7D0D72 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- 69032BA5DECB6C77AFE3212E7E1B1BCF /* PBXTargetDependency */,
- );
- name = "Pods-ContainerControllerSwift_Tests";
- productName = "Pods-ContainerControllerSwift_Tests";
- productReference = 88289C16D7EE3DABA481CCA2A23F6606 /* Pods_ContainerControllerSwift_Tests.framework */;
- productType = "com.apple.product-type.framework";
- };
- 5DA187609B115AA5A2E3705A1CC63904 /* ContainerControllerSwift */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 6CB8AB146878144EC74A1984A46394E7 /* Build configuration list for PBXNativeTarget "ContainerControllerSwift" */;
- buildPhases = (
- B6589F5E693B0F599EE61663D53BFC0B /* Headers */,
- 8D73846FD2F638F90E544DD49FB6B21C /* Sources */,
- 87DFEC96161434658D6641AFC953FF01 /* Frameworks */,
- 38EC08418A9C74F166DEADADD3FCCC0A /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = ContainerControllerSwift;
- productName = ContainerControllerSwift;
- productReference = F976F9D3CEF51D2530649D115424E24B /* ContainerControllerSwift.framework */;
- productType = "com.apple.product-type.framework";
- };
- CE197115FA4CB443FE4917D7ACF96849 /* Pods-ContainerControllerSwift_Example */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 705E809BF51E50D9619902BC075C9866 /* Build configuration list for PBXNativeTarget "Pods-ContainerControllerSwift_Example" */;
- buildPhases = (
- 3209EBB5E1EB3F096D8CE62F865CA233 /* Headers */,
- 2188AC3092E4803D1084D9C11397B57D /* Sources */,
- 29CBBA589A4FEB04C5A69211E237F2F3 /* Frameworks */,
- D2E9760AEBB67731AE4FE9BC60795F8B /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- 065D679D97DDDBFE9D3D1D2A679EB6E6 /* PBXTargetDependency */,
- );
- name = "Pods-ContainerControllerSwift_Example";
- productName = "Pods-ContainerControllerSwift_Example";
- productReference = 148A1CC4CCA9A45E6679C0483EC257F1 /* Pods_ContainerControllerSwift_Example.framework */;
- productType = "com.apple.product-type.framework";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- BFDFE7DC352907FC980B868725387E98 /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastSwiftUpdateCheck = 1100;
- LastUpgradeCheck = 1150;
- TargetAttributes = {
- 5DA187609B115AA5A2E3705A1CC63904 = {
- LastSwiftMigration = 1150;
- };
- };
- };
- buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = en;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = CF1408CF629C7361332E53B88F7BD30C;
- productRefGroup = CB7E3194DE1F57EE61854BAC0794E423 /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 5DA187609B115AA5A2E3705A1CC63904 /* ContainerControllerSwift */,
- CE197115FA4CB443FE4917D7ACF96849 /* Pods-ContainerControllerSwift_Example */,
- 1169D43D75A981EA7C2522A5530B2CFF /* Pods-ContainerControllerSwift_Tests */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 38EC08418A9C74F166DEADADD3FCCC0A /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- A32F56004ACFE7CFCCA7EAAE9F7D0D72 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- D2E9760AEBB67731AE4FE9BC60795F8B /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 2188AC3092E4803D1084D9C11397B57D /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 6832A37E4BE96FFAB256437366565B3A /* Pods-ContainerControllerSwift_Example-dummy.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 24299AA297D0F82D7388343ADD59E8E6 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 92EB6A1534372D92475E0C3060E06BD8 /* Pods-ContainerControllerSwift_Tests-dummy.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 8D73846FD2F638F90E544DD49FB6B21C /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 46ACEFCE249021CA00FAAD43 /* CollectionAdapterView.swift in Sources */,
- 46ACEFC6249021CA00FAAD43 /* TableAdapterCell.swift in Sources */,
- 46ACEFD2249021CA00FAAD43 /* ContainerDevice.swift in Sources */,
- 924134AF593E128FA35D2DB4F482484E /* ContainerControllerSwift-dummy.m in Sources */,
- 46ACEFCF249021CA00FAAD43 /* CollectionAdapterCellData.swift in Sources */,
- 46ACEFC5249021CA00FAAD43 /* TableAdapterItem.swift in Sources */,
- 46ACEFC7249021CA00FAAD43 /* TableAdapterView.swift in Sources */,
- 46ACEFC9249021CA00FAAD43 /* ContainerView.swift in Sources */,
- 46ACEFC8249021CA00FAAD43 /* TableAdapterTypes.swift in Sources */,
- 46ACEFC3249021CA00FAAD43 /* ContainerTypes.swift in Sources */,
- 46ACEFCD249021CA00FAAD43 /* CollectionAdapterCell.swift in Sources */,
- 46ACEFD1249021CA00FAAD43 /* ContainerControllerDelegate.swift in Sources */,
- 46ACEFCC249021CA00FAAD43 /* CollectionAdapterItem.swift in Sources */,
- 46ACEFC4249021CA00FAAD43 /* TableAdapterCellData.swift in Sources */,
- 46ACEFD0249021CA00FAAD43 /* CollectionAdapterTypes.swift in Sources */,
- 46ACEFCA249021CA00FAAD43 /* ContainerController.swift in Sources */,
- 46ACEFCB249021CA00FAAD43 /* ContainerLayout.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 065D679D97DDDBFE9D3D1D2A679EB6E6 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- name = ContainerControllerSwift;
- target = 5DA187609B115AA5A2E3705A1CC63904 /* ContainerControllerSwift */;
- targetProxy = 65FC883BECB76655B966D1157DC123BC /* PBXContainerItemProxy */;
- };
- 69032BA5DECB6C77AFE3212E7E1B1BCF /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- name = "Pods-ContainerControllerSwift_Example";
- target = CE197115FA4CB443FE4917D7ACF96849 /* Pods-ContainerControllerSwift_Example */;
- targetProxy = 0F48CBB7540AE6469B989CFD7E5E8088 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- 1422B121EAEAEA11307496903FA623C6 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_ENABLE_OBJC_WEAK = 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_DOCUMENTATION_COMMENTS = YES;
- 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "POD_CONFIGURATION_RELEASE=1",
- "$(inherited)",
- );
- 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;
- MTL_FAST_MATH = YES;
- PRODUCT_NAME = "$(TARGET_NAME)";
- STRIP_INSTALLED_PRODUCT = NO;
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
- SWIFT_VERSION = 5.0;
- SYMROOT = "${SRCROOT}/../build";
- };
- name = Release;
- };
- 26BCF93948683D0734518128096B3167 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = E98D59B1404C0A19A30E36781DD5D960 /* Pods-ContainerControllerSwift_Tests.release.xcconfig */;
- buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
- CLANG_ENABLE_OBJC_WEAK = NO;
- CODE_SIGN_IDENTITY = "";
- "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
- "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = "Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-Info.plist";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- MACH_O_TYPE = staticlib;
- MODULEMAP_FILE = "Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.modulemap";
- OTHER_LDFLAGS = "";
- OTHER_LIBTOOLFLAGS = "";
- PODS_ROOT = "$(SRCROOT)";
- PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
- PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
- SDKROOT = iphoneos;
- SKIP_INSTALL = YES;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Release;
- };
- 4B60B7C4A4E5DC09B75F55944938FD08 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 17B800897A944FAFD0416DC3C8A2B9CD /* ContainerControllerSwift.debug.xcconfig */;
- buildSettings = {
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_WEAK = NO;
- CODE_SIGN_IDENTITY = "";
- "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
- "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- GCC_PREFIX_HEADER = "Target Support Files/ContainerControllerSwift/ContainerControllerSwift-prefix.pch";
- INFOPLIST_FILE = "Target Support Files/ContainerControllerSwift/ContainerControllerSwift-Info.plist";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- MODULEMAP_FILE = "Target Support Files/ContainerControllerSwift/ContainerControllerSwift.modulemap";
- PRODUCT_MODULE_NAME = ContainerControllerSwift;
- PRODUCT_NAME = ContainerControllerSwift;
- SDKROOT = iphoneos;
- SKIP_INSTALL = YES;
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 5.2.4;
- TARGETED_DEVICE_FAMILY = "1,2";
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Debug;
- };
- 63BC51FFBDA911BFD5F02170C232309D /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = A44F5E78625C75314837F442526B9F1F /* Pods-ContainerControllerSwift_Tests.debug.xcconfig */;
- buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
- CLANG_ENABLE_OBJC_WEAK = NO;
- CODE_SIGN_IDENTITY = "";
- "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
- "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = "Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-Info.plist";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- MACH_O_TYPE = staticlib;
- MODULEMAP_FILE = "Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.modulemap";
- OTHER_LDFLAGS = "";
- OTHER_LIBTOOLFLAGS = "";
- PODS_ROOT = "$(SRCROOT)";
- PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
- PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
- SDKROOT = iphoneos;
- SKIP_INSTALL = YES;
- TARGETED_DEVICE_FAMILY = "1,2";
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Debug;
- };
- 950B3D6FCB805C8094B9EDDD7CAE3F1E /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 82F3FE4320C7E1306E9D6353343C0247 /* ContainerControllerSwift.release.xcconfig */;
- buildSettings = {
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_WEAK = NO;
- CODE_SIGN_IDENTITY = "";
- "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
- "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- GCC_PREFIX_HEADER = "Target Support Files/ContainerControllerSwift/ContainerControllerSwift-prefix.pch";
- INFOPLIST_FILE = "Target Support Files/ContainerControllerSwift/ContainerControllerSwift-Info.plist";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- MODULEMAP_FILE = "Target Support Files/ContainerControllerSwift/ContainerControllerSwift.modulemap";
- PRODUCT_MODULE_NAME = ContainerControllerSwift;
- PRODUCT_NAME = ContainerControllerSwift;
- SDKROOT = iphoneos;
- SKIP_INSTALL = YES;
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
- SWIFT_VERSION = 5.2.4;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Release;
- };
- E65016AE53739E89665FE7105CAF7606 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 89922BFA2A740F6B35D8B7F42EC3C4A6 /* Pods-ContainerControllerSwift_Example.release.xcconfig */;
- buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
- CLANG_ENABLE_OBJC_WEAK = NO;
- CODE_SIGN_IDENTITY = "";
- "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
- "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = "Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-Info.plist";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- MACH_O_TYPE = staticlib;
- MODULEMAP_FILE = "Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.modulemap";
- OTHER_LDFLAGS = "";
- OTHER_LIBTOOLFLAGS = "";
- PODS_ROOT = "$(SRCROOT)";
- PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
- PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
- SDKROOT = iphoneos;
- SKIP_INSTALL = YES;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Release;
- };
- ED7888FA6713EABBF66D26A8003AD1CA /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_ENABLE_OBJC_WEAK = 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_DOCUMENTATION_COMMENTS = YES;
- 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "POD_CONFIGURATION_DEBUG=1",
- "DEBUG=1",
- "$(inherited)",
- );
- 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 = INCLUDE_SOURCE;
- MTL_FAST_MATH = YES;
- ONLY_ACTIVE_ARCH = YES;
- PRODUCT_NAME = "$(TARGET_NAME)";
- STRIP_INSTALLED_PRODUCT = NO;
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 5.0;
- SYMROOT = "${SRCROOT}/../build";
- };
- name = Debug;
- };
- EEB7BC0972CEA9399054E0C7469C6AAF /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = CEB1B117C8448E026CC4FB019E982F9A /* Pods-ContainerControllerSwift_Example.debug.xcconfig */;
- buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
- CLANG_ENABLE_OBJC_WEAK = NO;
- CODE_SIGN_IDENTITY = "";
- "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
- "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = "Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-Info.plist";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- MACH_O_TYPE = staticlib;
- MODULEMAP_FILE = "Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.modulemap";
- OTHER_LDFLAGS = "";
- OTHER_LIBTOOLFLAGS = "";
- PODS_ROOT = "$(SRCROOT)";
- PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
- PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
- SDKROOT = iphoneos;
- SKIP_INSTALL = YES;
- TARGETED_DEVICE_FAMILY = "1,2";
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Debug;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- ED7888FA6713EABBF66D26A8003AD1CA /* Debug */,
- 1422B121EAEAEA11307496903FA623C6 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 6CB8AB146878144EC74A1984A46394E7 /* Build configuration list for PBXNativeTarget "ContainerControllerSwift" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 4B60B7C4A4E5DC09B75F55944938FD08 /* Debug */,
- 950B3D6FCB805C8094B9EDDD7CAE3F1E /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 705E809BF51E50D9619902BC075C9866 /* Build configuration list for PBXNativeTarget "Pods-ContainerControllerSwift_Example" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- EEB7BC0972CEA9399054E0C7469C6AAF /* Debug */,
- E65016AE53739E89665FE7105CAF7606 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 939D4C7ED440B6E8B7F08A931528D9DC /* Build configuration list for PBXNativeTarget "Pods-ContainerControllerSwift_Tests" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 63BC51FFBDA911BFD5F02170C232309D /* Debug */,
- 26BCF93948683D0734518128096B3167 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */;
-}
diff --git a/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-dummy.m b/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-dummy.m
deleted file mode 100644
index 606d79d..0000000
--- a/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-dummy.m
+++ /dev/null
@@ -1,5 +0,0 @@
-#import
-@interface PodsDummy_ContainerControllerSwift : NSObject
-@end
-@implementation PodsDummy_ContainerControllerSwift
-@end
diff --git a/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.modulemap b/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.modulemap
deleted file mode 100644
index fc40a06..0000000
--- a/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.modulemap
+++ /dev/null
@@ -1,6 +0,0 @@
-framework module ContainerControllerSwift {
- umbrella header "ContainerControllerSwift-umbrella.h"
-
- export *
- module * { export * }
-}
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-Info.plist b/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-Info.plist
deleted file mode 100644
index 2243fe6..0000000
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-Info.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- ${EXECUTABLE_NAME}
- CFBundleIdentifier
- ${PRODUCT_BUNDLE_IDENTIFIER}
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- ${PRODUCT_NAME}
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0.0
- CFBundleSignature
- ????
- CFBundleVersion
- ${CURRENT_PROJECT_VERSION}
- NSPrincipalClass
-
-
-
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-acknowledgements.markdown
deleted file mode 100644
index 102af75..0000000
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-acknowledgements.markdown
+++ /dev/null
@@ -1,3 +0,0 @@
-# Acknowledgements
-This application makes use of the following third party libraries:
-Generated by CocoaPods - https://cocoapods.org
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-acknowledgements.plist
deleted file mode 100644
index 7acbad1..0000000
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-acknowledgements.plist
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
- PreferenceSpecifiers
-
-
- FooterText
- This application makes use of the following third party libraries:
- Title
- Acknowledgements
- Type
- PSGroupSpecifier
-
-
- FooterText
- Generated by CocoaPods - https://cocoapods.org
- Title
-
- Type
- PSGroupSpecifier
-
-
- StringsTable
- Acknowledgements
- Title
- Acknowledgements
-
-
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-dummy.m b/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-dummy.m
deleted file mode 100644
index 16ba5f4..0000000
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-dummy.m
+++ /dev/null
@@ -1,5 +0,0 @@
-#import
-@interface PodsDummy_Pods_ContainerControllerSwift_Tests : NSObject
-@end
-@implementation PodsDummy_Pods_ContainerControllerSwift_Tests
-@end
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-frameworks.sh
deleted file mode 100755
index 0a3acf6..0000000
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-frameworks.sh
+++ /dev/null
@@ -1,207 +0,0 @@
-#!/bin/sh
-set -e
-set -u
-set -o pipefail
-
-function on_error {
- echo "$(realpath -mq "${0}"):$1: error: Unexpected failure"
-}
-trap 'on_error $LINENO' ERR
-
-if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
- # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
- # frameworks to, so exit 0 (signalling the script phase was successful).
- exit 0
-fi
-
-echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
-mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
-
-COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
-SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
-
-# Used as a return value for each invocation of `strip_invalid_archs` function.
-STRIP_BINARY_RETVAL=0
-
-# This protects against multiple targets copying the same framework dependency at the same time. The solution
-# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
-RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
-
-# Copies and strips a vendored framework
-install_framework()
-{
- if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
- local source="${BUILT_PRODUCTS_DIR}/$1"
- elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
- local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
- elif [ -r "$1" ]; then
- local source="$1"
- fi
-
- local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
-
- if [ -L "${source}" ]; then
- echo "Symlinked..."
- source="$(readlink "${source}")"
- fi
-
- # Use filter instead of exclude so missing patterns don't throw errors.
- echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
- rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
-
- local basename
- basename="$(basename -s .framework "$1")"
- binary="${destination}/${basename}.framework/${basename}"
-
- if ! [ -r "$binary" ]; then
- binary="${destination}/${basename}"
- elif [ -L "${binary}" ]; then
- echo "Destination binary is symlinked..."
- dirname="$(dirname "${binary}")"
- binary="${dirname}/$(readlink "${binary}")"
- fi
-
- # Strip invalid architectures so "fat" simulator / device frameworks work on device
- if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
- strip_invalid_archs "$binary"
- fi
-
- # Resign the code if required by the build settings to avoid unstable apps
- code_sign_if_enabled "${destination}/$(basename "$1")"
-
- # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
- if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
- local swift_runtime_libs
- swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u)
- for lib in $swift_runtime_libs; do
- echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
- rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
- code_sign_if_enabled "${destination}/${lib}"
- done
- fi
-}
-
-# Copies and strips a vendored dSYM
-install_dsym() {
- local source="$1"
- warn_missing_arch=${2:-true}
- if [ -r "$source" ]; then
- # Copy the dSYM into the targets temp dir.
- echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
- rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
-
- local basename
- basename="$(basename -s .dSYM "$source")"
- binary_name="$(ls "$source/Contents/Resources/DWARF")"
- binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}"
-
- # Strip invalid architectures so "fat" simulator / device frameworks work on device
- if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then
- strip_invalid_archs "$binary" "$warn_missing_arch"
- fi
-
- if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
- # Move the stripped file into its final destination.
- echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
- rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
- else
- # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
- touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM"
- fi
- fi
-}
-
-# Copies the bcsymbolmap files of a vendored framework
-install_bcsymbolmap() {
- local bcsymbolmap_path="$1"
- local destination="${BUILT_PRODUCTS_DIR}"
- echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}""
- rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"
-}
-
-# Signs a framework with the provided identity
-code_sign_if_enabled() {
- if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
- # Use the current code_sign_identity
- echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
- local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
-
- if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
- code_sign_cmd="$code_sign_cmd &"
- fi
- echo "$code_sign_cmd"
- eval "$code_sign_cmd"
- fi
-}
-
-# Strip invalid architectures
-strip_invalid_archs() {
- binary="$1"
- warn_missing_arch=${2:-true}
- # Get architectures for current target binary
- binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
- # Intersect them with the architectures we are building for
- intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
- # If there are no archs supported by this binary then warn the user
- if [[ -z "$intersected_archs" ]]; then
- if [[ "$warn_missing_arch" == "true" ]]; then
- echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
- fi
- STRIP_BINARY_RETVAL=0
- return
- fi
- stripped=""
- for arch in $binary_archs; do
- if ! [[ "${ARCHS}" == *"$arch"* ]]; then
- # Strip non-valid architectures in-place
- lipo -remove "$arch" -output "$binary" "$binary"
- stripped="$stripped $arch"
- fi
- done
- if [[ "$stripped" ]]; then
- echo "Stripped $binary of architectures:$stripped"
- fi
- STRIP_BINARY_RETVAL=1
-}
-
-install_artifact() {
- artifact="$1"
- base="$(basename "$artifact")"
- case $base in
- *.framework)
- install_framework "$artifact"
- ;;
- *.dSYM)
- # Suppress arch warnings since XCFrameworks will include many dSYM files
- install_dsym "$artifact" "false"
- ;;
- *.bcsymbolmap)
- install_bcsymbolmap "$artifact"
- ;;
- *)
- echo "error: Unrecognized artifact "$artifact""
- ;;
- esac
-}
-
-copy_artifacts() {
- file_list="$1"
- while read artifact; do
- install_artifact "$artifact"
- done <$file_list
-}
-
-ARTIFACT_LIST_FILE="${BUILT_PRODUCTS_DIR}/cocoapods-artifacts-${CONFIGURATION}.txt"
-if [ -r "${ARTIFACT_LIST_FILE}" ]; then
- copy_artifacts "${ARTIFACT_LIST_FILE}"
-fi
-
-if [[ "$CONFIGURATION" == "Debug" ]]; then
- install_framework "${BUILT_PRODUCTS_DIR}/FBSnapshotTestCase/FBSnapshotTestCase.framework"
-fi
-if [[ "$CONFIGURATION" == "Release" ]]; then
- install_framework "${BUILT_PRODUCTS_DIR}/FBSnapshotTestCase/FBSnapshotTestCase.framework"
-fi
-if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
- wait
-fi
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-umbrella.h b/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-umbrella.h
deleted file mode 100644
index d0e271a..0000000
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-umbrella.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifdef __OBJC__
-#import
-#else
-#ifndef FOUNDATION_EXPORT
-#if defined(__cplusplus)
-#define FOUNDATION_EXPORT extern "C"
-#else
-#define FOUNDATION_EXPORT extern
-#endif
-#endif
-#endif
-
-
-FOUNDATION_EXPORT double Pods_ContainerControllerSwift_TestsVersionNumber;
-FOUNDATION_EXPORT const unsigned char Pods_ContainerControllerSwift_TestsVersionString[];
-
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.debug.xcconfig
deleted file mode 100644
index 0c52cec..0000000
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.debug.xcconfig
+++ /dev/null
@@ -1,9 +0,0 @@
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ContainerControllerSwift"
-GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ContainerControllerSwift/ContainerControllerSwift.framework/Headers"
-OTHER_LDFLAGS = $(inherited) -framework "ContainerControllerSwift"
-PODS_BUILD_DIR = ${BUILD_DIR}
-PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
-PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
-PODS_ROOT = ${SRCROOT}/Pods
-USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.modulemap b/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.modulemap
deleted file mode 100644
index 1ddf52a..0000000
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.modulemap
+++ /dev/null
@@ -1,6 +0,0 @@
-framework module Pods_ContainerControllerSwift_Tests {
- umbrella header "Pods-ContainerControllerSwift_Tests-umbrella.h"
-
- export *
- module * { export * }
-}
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.release.xcconfig
deleted file mode 100644
index 0c52cec..0000000
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.release.xcconfig
+++ /dev/null
@@ -1,9 +0,0 @@
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ContainerControllerSwift"
-GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ContainerControllerSwift/ContainerControllerSwift.framework/Headers"
-OTHER_LDFLAGS = $(inherited) -framework "ContainerControllerSwift"
-PODS_BUILD_DIR = ${BUILD_DIR}
-PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
-PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
-PODS_ROOT = ${SRCROOT}/Pods
-USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
diff --git a/Example/ContainerControllerSwift/AppDelegate.swift b/Examples/Cocoapods/ContainerController/AppDelegate.swift
similarity index 98%
rename from Example/ContainerControllerSwift/AppDelegate.swift
rename to Examples/Cocoapods/ContainerController/AppDelegate.swift
index 33e3edf..cfefe01 100644
--- a/Example/ContainerControllerSwift/AppDelegate.swift
+++ b/Examples/Cocoapods/ContainerController/AppDelegate.swift
@@ -1,6 +1,6 @@
//
// AppDelegate.swift
-// ContainerControllerSwift
+// ContainerController
//
// Created by rustamburger@gmail.com on 06/09/2020.
// Copyright (c) 2020 rustamburger@gmail.com. All rights reserved.
diff --git a/Example/ContainerControllerSwift/Base.lproj/LaunchScreen.xib b/Examples/Cocoapods/ContainerController/Base.lproj/LaunchScreen.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Base.lproj/LaunchScreen.xib
rename to Examples/Cocoapods/ContainerController/Base.lproj/LaunchScreen.xib
diff --git a/Example/ContainerControllerSwift/Base.lproj/Main.storyboard b/Examples/Cocoapods/ContainerController/Base.lproj/Main.storyboard
similarity index 100%
rename from Example/ContainerControllerSwift/Base.lproj/Main.storyboard
rename to Examples/Cocoapods/ContainerController/Base.lproj/Main.storyboard
diff --git a/Example/ContainerControllerSwift/ExampleAddCollectionView/ExampleAddCollectionViewController.storyboard b/Examples/Cocoapods/ContainerController/ExampleAddCollectionView/ExampleAddCollectionViewController.storyboard
similarity index 100%
rename from Example/ContainerControllerSwift/ExampleAddCollectionView/ExampleAddCollectionViewController.storyboard
rename to Examples/Cocoapods/ContainerController/ExampleAddCollectionView/ExampleAddCollectionViewController.storyboard
diff --git a/Example/ContainerControllerSwift/ExampleAddCollectionView/ExampleAddCollectionViewController.swift b/Examples/Cocoapods/ContainerController/ExampleAddCollectionView/ExampleAddCollectionViewController.swift
similarity index 98%
rename from Example/ContainerControllerSwift/ExampleAddCollectionView/ExampleAddCollectionViewController.swift
rename to Examples/Cocoapods/ContainerController/ExampleAddCollectionView/ExampleAddCollectionViewController.swift
index 30fe820..0975ee4 100644
--- a/Example/ContainerControllerSwift/ExampleAddCollectionView/ExampleAddCollectionViewController.swift
+++ b/Examples/Cocoapods/ContainerController/ExampleAddCollectionView/ExampleAddCollectionViewController.swift
@@ -1,13 +1,13 @@
//
// ExampleAddCollectionViewController.swift
-// ContainerControllerSwift
+// ContainerController
//
// Created by mrustaa on 09.06.2020.
// Copyright © 2020 mrustaa. All rights reserved.
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
class ExampleAddCollectionViewController: StoryboardController {
diff --git a/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewController.storyboard b/Examples/Cocoapods/ContainerController/ExamplesAddTableView/ExampleAddTableViewController.storyboard
similarity index 100%
rename from Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewController.storyboard
rename to Examples/Cocoapods/ContainerController/ExamplesAddTableView/ExampleAddTableViewController.storyboard
diff --git a/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewController.swift b/Examples/Cocoapods/ContainerController/ExamplesAddTableView/ExampleAddTableViewController.swift
similarity index 97%
rename from Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewController.swift
rename to Examples/Cocoapods/ContainerController/ExamplesAddTableView/ExampleAddTableViewController.swift
index 7fd6d07..bd00e05 100644
--- a/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewController.swift
+++ b/Examples/Cocoapods/ContainerController/ExamplesAddTableView/ExampleAddTableViewController.swift
@@ -1,13 +1,13 @@
//
// ExampleAddTableViewController.swift
-// ContainerControllerSwift
+// ContainerController
//
// Created by mrustaa on 09.06.2020.
// Copyright © 2020 mrustaa. All rights reserved.
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
class ExampleAddTableViewController: StoryboardController {
diff --git a/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift b/Examples/Cocoapods/ContainerController/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift
similarity index 97%
rename from Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift
rename to Examples/Cocoapods/ContainerController/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift
index 0cfd624..3defb48 100644
--- a/Example/ContainerControllerSwift/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift
+++ b/Examples/Cocoapods/ContainerController/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift
@@ -1,13 +1,13 @@
//
// ExampleAddTableViewControllerSettings.swift
-// ContainerControllerSwift
+// ContainerController
//
// Created by mrustaa on 09.06.2020.
// Copyright © 2020 mrustaa. All rights reserved.
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
extension ExampleAddTableViewController {
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesContainerController.swift b/Examples/Cocoapods/ContainerController/ExamplesSettings/Container/ExamplesContainerController.swift
similarity index 99%
rename from Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesContainerController.swift
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/Container/ExamplesContainerController.swift
index 3a8e45d..7785a24 100644
--- a/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesContainerController.swift
+++ b/Examples/Cocoapods/ContainerController/ExamplesSettings/Container/ExamplesContainerController.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
class ExamplesContainerController: ContainerController, ExampleCellDelegate {
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesContainerControllerScrollType.swift b/Examples/Cocoapods/ContainerController/ExamplesSettings/Container/ExamplesContainerControllerScrollType.swift
similarity index 100%
rename from Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesContainerControllerScrollType.swift
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/Container/ExamplesContainerControllerScrollType.swift
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesScrollViews.swift b/Examples/Cocoapods/ContainerController/ExamplesSettings/Container/ExamplesScrollViews.swift
similarity index 99%
rename from Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesScrollViews.swift
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/Container/ExamplesScrollViews.swift
index b13d19f..6c1e9c5 100644
--- a/Example/ContainerControllerSwift/ExamplesSettings/Container/ExamplesScrollViews.swift
+++ b/Examples/Cocoapods/ContainerController/ExamplesSettings/Container/ExamplesScrollViews.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - CollectionAdapterView Maps
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/ExamplesSettingsViewController.storyboard b/Examples/Cocoapods/ContainerController/ExamplesSettings/ExamplesSettingsViewController.storyboard
similarity index 100%
rename from Example/ContainerControllerSwift/ExamplesSettings/ExamplesSettingsViewController.storyboard
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/ExamplesSettingsViewController.storyboard
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/ExamplesSettingsViewController.swift b/Examples/Cocoapods/ContainerController/ExamplesSettings/ExamplesSettingsViewController.swift
similarity index 99%
rename from Example/ContainerControllerSwift/ExamplesSettings/ExamplesSettingsViewController.swift
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/ExamplesSettingsViewController.swift
index 35b2cc7..43e80f0 100644
--- a/Example/ContainerControllerSwift/ExamplesSettings/ExamplesSettingsViewController.swift
+++ b/Examples/Cocoapods/ContainerController/ExamplesSettings/ExamplesSettingsViewController.swift
@@ -2,7 +2,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
class ExamplesSettingsViewController: StoryboardController {
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCell.swift b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleCell.swift
similarity index 97%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCell.swift
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleCell.swift
index 86987ab..c03d3ba 100644
--- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCell.swift
+++ b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleCell.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Cell Delegate
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCellStyle.swift b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleCellStyle.swift
similarity index 98%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCellStyle.swift
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleCellStyle.swift
index 435898c..f3648b2 100644
--- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleCellStyle.swift
+++ b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleCellStyle.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Cell Style
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift
similarity index 98%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift
index 23dec3a..a1d353b 100644
--- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift
+++ b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.xib b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.xib
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.xib
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift
similarity index 99%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift
index 87fa427..4b189a4 100644
--- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift
+++ b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.xib b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.xib
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.xib
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift
similarity index 98%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift
index 37e7a51..ee96081 100644
--- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift
+++ b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.xib b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.xib
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.xib
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift
similarity index 98%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift
index f7422ff..399c771 100644
--- a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift
+++ b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.xib b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.xib
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.xib
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift
similarity index 98%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift
index 9b61f64..01db452 100644
--- a/Example/ContainerControllerSwift/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift
+++ b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift
@@ -2,7 +2,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
class ExampleCollectionItem: CollectionAdapterItem {
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.xib b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.xib
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.xib
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.swift b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.swift
similarity index 100%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.swift
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.swift
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.xib b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.xib
similarity index 100%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.xib
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.xib
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift
similarity index 100%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib
similarity index 96%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib
index 98e9abd..ab4b05d 100644
--- a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib
+++ b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib
@@ -1,8 +1,8 @@
-
+
-
+
@@ -14,7 +14,7 @@
-
+
@@ -34,7 +34,7 @@
-
+
@@ -59,7 +59,7 @@
-
+
diff --git a/Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/headerShadow.png b/Examples/Cocoapods/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/headerShadow.png
similarity index 100%
rename from Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/headerShadow.png
rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/headerShadow.png
diff --git a/Example/ContainerControllerSwift/Framework/DesignableViews/DesignButton.swift b/Examples/Cocoapods/ContainerController/Framework/DesignableViews/DesignButton.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Framework/DesignableViews/DesignButton.swift
rename to Examples/Cocoapods/ContainerController/Framework/DesignableViews/DesignButton.swift
diff --git a/Example/ContainerControllerSwift/Framework/DesignableViews/DesignView.swift b/Examples/Cocoapods/ContainerController/Framework/DesignableViews/DesignView.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Framework/DesignableViews/DesignView.swift
rename to Examples/Cocoapods/ContainerController/Framework/DesignableViews/DesignView.swift
diff --git a/Example/ContainerControllerSwift/Framework/LoadNib/StoryboardController.swift b/Examples/Cocoapods/ContainerController/Framework/LoadNib/StoryboardController.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Framework/LoadNib/StoryboardController.swift
rename to Examples/Cocoapods/ContainerController/Framework/LoadNib/StoryboardController.swift
diff --git a/Example/ContainerControllerSwift/Framework/LoadNib/XibView.swift b/Examples/Cocoapods/ContainerController/Framework/LoadNib/XibView.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Framework/LoadNib/XibView.swift
rename to Examples/Cocoapods/ContainerController/Framework/LoadNib/XibView.swift
diff --git a/Example/ContainerControllerSwift/Framework/Utils/Color.swift b/Examples/Cocoapods/ContainerController/Framework/Utils/Color.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Framework/Utils/Color.swift
rename to Examples/Cocoapods/ContainerController/Framework/Utils/Color.swift
diff --git a/Example/ContainerControllerSwift/Framework/Utils/UIView+Positioning.swift b/Examples/Cocoapods/ContainerController/Framework/Utils/UIView+Positioning.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Framework/Utils/UIView+Positioning.swift
rename to Examples/Cocoapods/ContainerController/Framework/Utils/UIView+Positioning.swift
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/Contents.json b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/Contents.json
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/Contents.json
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-1024.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-1024.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-1024.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-1024.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-20.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-20.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-20@2x.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20@2x.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-20@2x.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20@2x.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-20@3x.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20@3x.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-20@3x.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20@3x.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-29.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-29.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-29@2x.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29@2x.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-29@2x.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29@2x.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-29@3x.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29@3x.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-29@3x.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29@3x.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-40.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-40.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-40@2x.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40@2x.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-40@2x.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40@2x.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-40@3x.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40@3x.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-40@3x.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40@3x.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-60@2x.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-60@2x.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-60@2x.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-60@2x.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-60@3x.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-60@3x.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-60@3x.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-60@3x.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-76.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-76.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-76.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-76.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-76@2x.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-76@2x.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-76@2x.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-76@2x.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-83.5@2x.png b/Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-83.5@2x.png
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/AppIcon.appiconset/appIcon-83.5@2x.png
rename to Examples/Cocoapods/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-83.5@2x.png
diff --git a/Example/ContainerControllerSwift/Images.xcassets/Contents.json b/Examples/Cocoapods/ContainerController/Images.xcassets/Contents.json
similarity index 100%
rename from Example/ContainerControllerSwift/Images.xcassets/Contents.json
rename to Examples/Cocoapods/ContainerController/Images.xcassets/Contents.json
diff --git a/Example/ContainerControllerSwift/Info.plist b/Examples/Cocoapods/ContainerController/Info.plist
similarity index 100%
rename from Example/ContainerControllerSwift/Info.plist
rename to Examples/Cocoapods/ContainerController/Info.plist
diff --git a/Example/ContainerControllerSwift/Localization/LocalizationManager.swift b/Examples/Cocoapods/ContainerController/Localization/LocalizationManager.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Localization/LocalizationManager.swift
rename to Examples/Cocoapods/ContainerController/Localization/LocalizationManager.swift
diff --git a/Example/ContainerControllerSwift/Localization/LocalizeFuncs.swift b/Examples/Cocoapods/ContainerController/Localization/LocalizeFuncs.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Localization/LocalizeFuncs.swift
rename to Examples/Cocoapods/ContainerController/Localization/LocalizeFuncs.swift
diff --git a/Example/ContainerControllerSwift/Localization/en.lproj/InfoPlist.strings b/Examples/Cocoapods/ContainerController/Localization/en.lproj/InfoPlist.strings
similarity index 100%
rename from Example/ContainerControllerSwift/Localization/en.lproj/InfoPlist.strings
rename to Examples/Cocoapods/ContainerController/Localization/en.lproj/InfoPlist.strings
diff --git a/Example/ContainerControllerSwift/Localization/en.lproj/Localizable.strings b/Examples/Cocoapods/ContainerController/Localization/en.lproj/Localizable.strings
similarity index 100%
rename from Example/ContainerControllerSwift/Localization/en.lproj/Localizable.strings
rename to Examples/Cocoapods/ContainerController/Localization/en.lproj/Localizable.strings
diff --git a/Example/ContainerControllerSwift/Localization/ru.lproj/InfoPlist.strings b/Examples/Cocoapods/ContainerController/Localization/ru.lproj/InfoPlist.strings
similarity index 100%
rename from Example/ContainerControllerSwift/Localization/ru.lproj/InfoPlist.strings
rename to Examples/Cocoapods/ContainerController/Localization/ru.lproj/InfoPlist.strings
diff --git a/Example/ContainerControllerSwift/Localization/ru.lproj/Localizable.strings b/Examples/Cocoapods/ContainerController/Localization/ru.lproj/Localizable.strings
similarity index 100%
rename from Example/ContainerControllerSwift/Localization/ru.lproj/Localizable.strings
rename to Examples/Cocoapods/ContainerController/Localization/ru.lproj/Localizable.strings
diff --git a/Example/ContainerControllerSwift/Maps/Container/Controller/LocationDetails/LocationContainerController.swift b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerController.swift
similarity index 99%
rename from Example/ContainerControllerSwift/Maps/Container/Controller/LocationDetails/LocationContainerController.swift
rename to Examples/Cocoapods/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerController.swift
index 8ff6b21..dbb65c4 100644
--- a/Example/ContainerControllerSwift/Maps/Container/Controller/LocationDetails/LocationContainerController.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerController.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
class LocationContainerController: ContainerController, ContainerControllerDelegate {
diff --git a/Example/ContainerControllerSwift/Maps/Container/Controller/LocationDetails/LocationContainerControllerDelegate.swift b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerControllerDelegate.swift
similarity index 95%
rename from Example/ContainerControllerSwift/Maps/Container/Controller/LocationDetails/LocationContainerControllerDelegate.swift
rename to Examples/Cocoapods/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerControllerDelegate.swift
index 9346ccb..a9b9d54 100644
--- a/Example/ContainerControllerSwift/Maps/Container/Controller/LocationDetails/LocationContainerControllerDelegate.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerControllerDelegate.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
protocol LocationContainerControllerDelegate {
diff --git a/Example/ContainerControllerSwift/Maps/Container/Controller/Maps/MapsContainerController.swift b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/Maps/MapsContainerController.swift
similarity index 99%
rename from Example/ContainerControllerSwift/Maps/Container/Controller/Maps/MapsContainerController.swift
rename to Examples/Cocoapods/ContainerController/Maps/Container/Controller/Maps/MapsContainerController.swift
index 9403fe8..010794e 100644
--- a/Example/ContainerControllerSwift/Maps/Container/Controller/Maps/MapsContainerController.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/Maps/MapsContainerController.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
class MapsContainerController: ContainerController, ContainerControllerDelegate {
diff --git a/Example/ContainerControllerSwift/Maps/Container/Controller/Maps/MapsContainerControllerDelegate.swift b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/Maps/MapsContainerControllerDelegate.swift
similarity index 93%
rename from Example/ContainerControllerSwift/Maps/Container/Controller/Maps/MapsContainerControllerDelegate.swift
rename to Examples/Cocoapods/ContainerController/Maps/Container/Controller/Maps/MapsContainerControllerDelegate.swift
index fe6cbe7..e450d5f 100644
--- a/Example/ContainerControllerSwift/Maps/Container/Controller/Maps/MapsContainerControllerDelegate.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/Maps/MapsContainerControllerDelegate.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
protocol MapsContainerControllerDelegate {
diff --git a/Example/ContainerControllerSwift/Maps/Container/Controller/Menu/MenuContainerController.swift b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/Menu/MenuContainerController.swift
similarity index 99%
rename from Example/ContainerControllerSwift/Maps/Container/Controller/Menu/MenuContainerController.swift
rename to Examples/Cocoapods/ContainerController/Maps/Container/Controller/Menu/MenuContainerController.swift
index 57b201d..369223f 100644
--- a/Example/ContainerControllerSwift/Maps/Container/Controller/Menu/MenuContainerController.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/Menu/MenuContainerController.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
class MenuContainerController: ContainerController, ContainerControllerDelegate {
diff --git a/Example/ContainerControllerSwift/Maps/Container/Controller/Menu/MenuContainerControllerDelegate.swift b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/Menu/MenuContainerControllerDelegate.swift
similarity index 94%
rename from Example/ContainerControllerSwift/Maps/Container/Controller/Menu/MenuContainerControllerDelegate.swift
rename to Examples/Cocoapods/ContainerController/Maps/Container/Controller/Menu/MenuContainerControllerDelegate.swift
index e9e0217..e1e024d 100644
--- a/Example/ContainerControllerSwift/Maps/Container/Controller/Menu/MenuContainerControllerDelegate.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/Menu/MenuContainerControllerDelegate.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
protocol MenuContainerControllerDelegate {
diff --git a/Example/ContainerControllerSwift/Maps/Container/Controller/Route/RouteContainerController.swift b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/Route/RouteContainerController.swift
similarity index 99%
rename from Example/ContainerControllerSwift/Maps/Container/Controller/Route/RouteContainerController.swift
rename to Examples/Cocoapods/ContainerController/Maps/Container/Controller/Route/RouteContainerController.swift
index cc86275..e4a0fb8 100644
--- a/Example/ContainerControllerSwift/Maps/Container/Controller/Route/RouteContainerController.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/Route/RouteContainerController.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
open class RouteContainerController: ContainerController, ContainerControllerDelegate {
diff --git a/Example/ContainerControllerSwift/Maps/Container/Controller/Route/RouteContainerControllerDelegate.swift b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/Route/RouteContainerControllerDelegate.swift
similarity index 94%
rename from Example/ContainerControllerSwift/Maps/Container/Controller/Route/RouteContainerControllerDelegate.swift
rename to Examples/Cocoapods/ContainerController/Maps/Container/Controller/Route/RouteContainerControllerDelegate.swift
index 8508a47..7d7e0e6 100644
--- a/Example/ContainerControllerSwift/Maps/Container/Controller/Route/RouteContainerControllerDelegate.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/Container/Controller/Route/RouteContainerControllerDelegate.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
public protocol RouteContainerControllerDelegate {
diff --git a/Example/ContainerControllerSwift/Maps/Container/Layout/MapsContainerLayout.swift b/Examples/Cocoapods/ContainerController/Maps/Container/Layout/MapsContainerLayout.swift
similarity index 98%
rename from Example/ContainerControllerSwift/Maps/Container/Layout/MapsContainerLayout.swift
rename to Examples/Cocoapods/ContainerController/Maps/Container/Layout/MapsContainerLayout.swift
index 8cc9595..8e2bf85 100644
--- a/Example/ContainerControllerSwift/Maps/Container/Layout/MapsContainerLayout.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/Container/Layout/MapsContainerLayout.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
class MapsContainerLayout: ContainerLayout {
diff --git a/Example/ContainerControllerSwift/Maps/Container/Layout/MapsMainContainerLayout.swift b/Examples/Cocoapods/ContainerController/Maps/Container/Layout/MapsMainContainerLayout.swift
similarity index 95%
rename from Example/ContainerControllerSwift/Maps/Container/Layout/MapsMainContainerLayout.swift
rename to Examples/Cocoapods/ContainerController/Maps/Container/Layout/MapsMainContainerLayout.swift
index 522ee5d..d7c37f5 100644
--- a/Example/ContainerControllerSwift/Maps/Container/Layout/MapsMainContainerLayout.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/Container/Layout/MapsMainContainerLayout.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
class MapsMainContainerLayout: MapsContainerLayout {
diff --git a/Example/ContainerControllerSwift/Maps/Container/Layout/MapsMenuContainerLayout.swift b/Examples/Cocoapods/ContainerController/Maps/Container/Layout/MapsMenuContainerLayout.swift
similarity index 96%
rename from Example/ContainerControllerSwift/Maps/Container/Layout/MapsMenuContainerLayout.swift
rename to Examples/Cocoapods/ContainerController/Maps/Container/Layout/MapsMenuContainerLayout.swift
index a4246c2..70a593c 100644
--- a/Example/ContainerControllerSwift/Maps/Container/Layout/MapsMenuContainerLayout.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/Container/Layout/MapsMenuContainerLayout.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
class MapsMenuContainerLayout: ContainerLayout {
diff --git a/Example/ContainerControllerSwift/Maps/Container/Layout/MapsRouteContainerLayout.swift b/Examples/Cocoapods/ContainerController/Maps/Container/Layout/MapsRouteContainerLayout.swift
similarity index 96%
rename from Example/ContainerControllerSwift/Maps/Container/Layout/MapsRouteContainerLayout.swift
rename to Examples/Cocoapods/ContainerController/Maps/Container/Layout/MapsRouteContainerLayout.swift
index 4686720..7cab8f7 100644
--- a/Example/ContainerControllerSwift/Maps/Container/Layout/MapsRouteContainerLayout.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/Container/Layout/MapsRouteContainerLayout.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
class MapsRouteContainerLayout: MapsContainerLayout {
diff --git a/Example/ContainerControllerSwift/Maps/MapManager/MapViewManager.swift b/Examples/Cocoapods/ContainerController/Maps/MapManager/MapViewManager.swift
similarity index 99%
rename from Example/ContainerControllerSwift/Maps/MapManager/MapViewManager.swift
rename to Examples/Cocoapods/ContainerController/Maps/MapManager/MapViewManager.swift
index 3da68de..024e7ab 100644
--- a/Example/ContainerControllerSwift/Maps/MapManager/MapViewManager.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/MapManager/MapViewManager.swift
@@ -9,7 +9,7 @@
import UIKit
import MapKit
import CoreLocation
-import ContainerControllerSwift
+import ContainerController
class MapViewManager: NSObject {
diff --git a/Example/ContainerControllerSwift/Maps/MapsViewController.storyboard b/Examples/Cocoapods/ContainerController/Maps/MapsViewController.storyboard
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/MapsViewController.storyboard
rename to Examples/Cocoapods/ContainerController/Maps/MapsViewController.storyboard
diff --git a/Example/ContainerControllerSwift/Maps/MapsViewController.swift b/Examples/Cocoapods/ContainerController/Maps/MapsViewController.swift
similarity index 99%
rename from Example/ContainerControllerSwift/Maps/MapsViewController.swift
rename to Examples/Cocoapods/ContainerController/Maps/MapsViewController.swift
index 69763d0..3c136a7 100644
--- a/Example/ContainerControllerSwift/Maps/MapsViewController.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/MapsViewController.swift
@@ -9,7 +9,7 @@
import UIKit
import MapKit
import CoreLocation
-import ContainerControllerSwift
+import ContainerController
class MapsViewController: StoryboardController, MapsContainerControllerDelegate, LocationContainerControllerDelegate, RouteContainerControllerDelegate, MenuContainerControllerDelegate {
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.swift
similarity index 98%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.swift
index 1a196f0..6106fe7 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.swift
similarity index 98%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.swift
index 92020a1..b87ecf2 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
enum LocationButtonCellType {
case blue // 0 122 255
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.swift
similarity index 97%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.swift
index 3514872..389a230 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.swift
similarity index 98%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.swift
index aac04ca..aee0fb7 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.swift
similarity index 98%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.swift
index b3d838b..6e27ae6 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionCellView.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionCellView.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionCellView.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionCellView.swift
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.swift
similarity index 97%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.swift
index 29cab4e..1ac2fda 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.swift
similarity index 99%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.swift
index d3d60ac..06163bd 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.xib
similarity index 97%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.xib
index e4ee8b1..b9ebecb 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.xib
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.xib
@@ -1,8 +1,8 @@
-
+
-
+
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.swift
similarity index 98%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.swift
index 366d0af..51eda7f 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
enum MapsLocationCellColorType {
case red
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.swift
similarity index 97%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.swift
index e8009bc..de280db 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.swift
similarity index 98%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.swift
index d2bb34d..7514b37 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
typealias SegmentIndexCallback = ((_ segmentIndex: Int) -> ())
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.swift
similarity index 97%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.swift
index a851570..9fb19cb 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.swift
similarity index 98%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.swift
index 0f3a1b2..2b57eb8 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.swift
similarity index 98%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.swift
index d60dbbd..ca13d27 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.swift
similarity index 98%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.swift
index dfcbab5..99aa194 100644
--- a/Example/ContainerControllerSwift/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.swift
@@ -3,7 +3,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
// MARK: - Item
diff --git a/Example/ContainerControllerSwift/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.swift b/Examples/Cocoapods/ContainerController/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.swift
similarity index 99%
rename from Example/ContainerControllerSwift/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.swift
index d87d9f2..89b35fb 100644
--- a/Example/ContainerControllerSwift/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.swift
+++ b/Examples/Cocoapods/ContainerController/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.swift
@@ -2,7 +2,7 @@
import UIKit
-import ContainerControllerSwift
+import ContainerController
enum MapsFavoriteColorType {
diff --git a/Example/ContainerControllerSwift/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.xib b/Examples/Cocoapods/ContainerController/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Main/MapsButtons/MapsButtons.swift b/Examples/Cocoapods/ContainerController/Maps/UI/View/Main/MapsButtons/MapsButtons.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Main/MapsButtons/MapsButtons.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Main/MapsButtons/MapsButtons.swift
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Main/MapsButtons/MapsButtons.xib b/Examples/Cocoapods/ContainerController/Maps/UI/View/Main/MapsButtons/MapsButtons.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Main/MapsButtons/MapsButtons.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Main/MapsButtons/MapsButtons.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.swift b/Examples/Cocoapods/ContainerController/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.swift
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.xib b/Examples/Cocoapods/ContainerController/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.swift b/Examples/Cocoapods/ContainerController/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.swift
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.xib b/Examples/Cocoapods/ContainerController/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.swift b/Examples/Cocoapods/ContainerController/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.swift
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.xib b/Examples/Cocoapods/ContainerController/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.swift b/Examples/Cocoapods/ContainerController/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.swift
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.xib b/Examples/Cocoapods/ContainerController/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.swift b/Examples/Cocoapods/ContainerController/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.swift
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.xib b/Examples/Cocoapods/ContainerController/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.xib
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.swift b/Examples/Cocoapods/ContainerController/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.swift
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.swift
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.swift
diff --git a/Example/ContainerControllerSwift/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.xib b/Examples/Cocoapods/ContainerController/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.xib
similarity index 100%
rename from Example/ContainerControllerSwift/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.xib
rename to Examples/Cocoapods/ContainerController/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.xib
diff --git a/Example/ContainerControllerSwift/SceneDelegate.swift b/Examples/Cocoapods/ContainerController/SceneDelegate.swift
similarity index 100%
rename from Example/ContainerControllerSwift/SceneDelegate.swift
rename to Examples/Cocoapods/ContainerController/SceneDelegate.swift
diff --git a/Example/ContainerControllerSwift/ViewController.swift b/Examples/Cocoapods/ContainerController/ViewController.swift
similarity index 98%
rename from Example/ContainerControllerSwift/ViewController.swift
rename to Examples/Cocoapods/ContainerController/ViewController.swift
index b415997..b8bdef3 100644
--- a/Example/ContainerControllerSwift/ViewController.swift
+++ b/Examples/Cocoapods/ContainerController/ViewController.swift
@@ -7,7 +7,7 @@
//
import UIKit
-import ContainerControllerSwift
+import ContainerController
class ViewController: UIViewController {
diff --git a/Example/ContainerControllerSwift/screenLandscape5.png b/Examples/Cocoapods/ContainerController/screenLandscape5.png
similarity index 100%
rename from Example/ContainerControllerSwift/screenLandscape5.png
rename to Examples/Cocoapods/ContainerController/screenLandscape5.png
diff --git a/Example/ContainerControllerSwift.xcodeproj/project.pbxproj b/Examples/Cocoapods/ContainerController_Example.xcodeproj/project.pbxproj
similarity index 95%
rename from Example/ContainerControllerSwift.xcodeproj/project.pbxproj
rename to Examples/Cocoapods/ContainerController_Example.xcodeproj/project.pbxproj
index d6fada8..1d11d8e 100644
--- a/Example/ContainerControllerSwift.xcodeproj/project.pbxproj
+++ b/Examples/Cocoapods/ContainerController_Example.xcodeproj/project.pbxproj
@@ -111,14 +111,11 @@
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 */; };
+ 8F038AC259787925F0B60978 /* Pods_ContainerControllerSwift_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7777186E8517706FCCAB1CE0 /* 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; };
+ 35E307E1112E819E72F9EEDA /* 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 = ""; };
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 = ""; };
@@ -227,11 +224,8 @@
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 = ""; };
+ 7777186E8517706FCCAB1CE0 /* Pods_ContainerControllerSwift_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ContainerControllerSwift_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ F58017D4A0878C1DA9E0B4F0 /* 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 = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -239,7 +233,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 968DB7E5EF2DD4AE15D171EB /* Pods_ContainerControllerSwift_Example.framework in Frameworks */,
+ 8F038AC259787925F0B60978 /* Pods_ContainerControllerSwift_Example.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -249,10 +243,8 @@
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 */,
+ F58017D4A0878C1DA9E0B4F0 /* Pods-ContainerControllerSwift_Example.debug.xcconfig */,
+ 35E307E1112E819E72F9EEDA /* Pods-ContainerControllerSwift_Example.release.xcconfig */,
);
path = Pods;
sourceTree = "";
@@ -863,11 +855,10 @@
607FACC71AFB9204008FA782 = {
isa = PBXGroup;
children = (
- 607FACF51AFB993E008FA782 /* Podspec */,
607FACD21AFB9204008FA782 /* Example */,
607FACD11AFB9204008FA782 /* Products */,
22F538CF8601A849D034CF8B /* Pods */,
- AD5BB6CA5AB2437952B3E0A8 /* Frameworks */,
+ F7B91C2178AB3441AEE40F0A /* Frameworks */,
);
sourceTree = "";
};
@@ -897,7 +888,7 @@
607FACD31AFB9204008FA782 /* Supporting Files */,
);
name = Example;
- path = ContainerControllerSwift;
+ path = ContainerController;
sourceTree = "";
};
607FACD31AFB9204008FA782 /* Supporting Files */ = {
@@ -909,21 +900,10 @@
name = "Supporting Files";
sourceTree = "";
};
- 607FACF51AFB993E008FA782 /* Podspec */ = {
+ F7B91C2178AB3441AEE40F0A /* Frameworks */ = {
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 */,
+ 7777186E8517706FCCAB1CE0 /* Pods_ContainerControllerSwift_Example.framework */,
);
name = Frameworks;
sourceTree = "";
@@ -935,11 +915,11 @@
isa = PBXNativeTarget;
buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "ContainerControllerSwift_Example" */;
buildPhases = (
- 83D2AA92C153B73649CBCF16 /* [CP] Check Pods Manifest.lock */,
+ 1ED69E4E57F5A46240517E7C /* [CP] Check Pods Manifest.lock */,
607FACCC1AFB9204008FA782 /* Sources */,
607FACCD1AFB9204008FA782 /* Frameworks */,
607FACCE1AFB9204008FA782 /* Resources */,
- 8E6E3C608EFDC3DE4C572F9E /* [CP] Embed Pods Frameworks */,
+ D0B16B8FFE146A37046F0753 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -962,12 +942,11 @@
TargetAttributes = {
607FACCF1AFB9204008FA782 = {
CreatedOnToolsVersion = 6.3.1;
- DevelopmentTeam = Y7546NLJW9;
LastSwiftMigration = 0900;
};
};
};
- buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "ContainerControllerSwift" */;
+ buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "ContainerController_Example" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = en;
hasScannedForEncodings = 0;
@@ -1037,7 +1016,7 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- 83D2AA92C153B73649CBCF16 /* [CP] Check Pods Manifest.lock */ = {
+ 1ED69E4E57F5A46240517E7C /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -1059,18 +1038,18 @@
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 */ = {
+ D0B16B8FFE146A37046F0753 /* [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",
+ "${BUILT_PRODUCTS_DIR}/ContainerController/ContainerController.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ContainerControllerSwift.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ContainerController.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@@ -1300,40 +1279,48 @@
};
607FACF01AFB9204008FA782 /* Debug */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 0AA8BF39B9F182FE833C0178 /* Pods-ContainerControllerSwift_Example.debug.xcconfig */;
+ baseConfigurationReference = F58017D4A0878C1DA9E0B4F0 /* Pods-ContainerControllerSwift_Example.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEVELOPMENT_TEAM = Y7546NLJW9;
+ DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = ContainerControllerSwift/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MODULE_NAME = ExampleApp;
PRODUCT_BUNDLE_IDENTIFIER = mrustaa.ContainerController;
PRODUCT_NAME = ContainerController;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
607FACF11AFB9204008FA782 /* Release */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 84550121AB9630F101ECE515 /* Pods-ContainerControllerSwift_Example.release.xcconfig */;
+ baseConfigurationReference = 35E307E1112E819E72F9EEDA /* Pods-ContainerControllerSwift_Example.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEVELOPMENT_TEAM = Y7546NLJW9;
+ DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = ContainerControllerSwift/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MODULE_NAME = ExampleApp;
PRODUCT_BUNDLE_IDENTIFIER = mrustaa.ContainerController;
PRODUCT_NAME = ContainerController;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
- 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "ContainerControllerSwift" */ = {
+ 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "ContainerController_Example" */ = {
isa = XCConfigurationList;
buildConfigurations = (
607FACED1AFB9204008FA782 /* Debug */,
diff --git a/Example/ContainerControllerSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Examples/Cocoapods/ContainerController_Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from Example/ContainerControllerSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata
rename to Examples/Cocoapods/ContainerController_Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/Examples/Cocoapods/ContainerController_Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Examples/Cocoapods/ContainerController_Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/Examples/Cocoapods/ContainerController_Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/Example/ContainerControllerSwift.xcodeproj/xcshareddata/xcschemes/ContainerControllerSwift-Example.xcscheme b/Examples/Cocoapods/ContainerController_Example.xcodeproj/xcshareddata/xcschemes/ContainerControllerSwift-Example.xcscheme
similarity index 100%
rename from Example/ContainerControllerSwift.xcodeproj/xcshareddata/xcschemes/ContainerControllerSwift-Example.xcscheme
rename to Examples/Cocoapods/ContainerController_Example.xcodeproj/xcshareddata/xcschemes/ContainerControllerSwift-Example.xcscheme
diff --git a/Example/ContainerControllerSwift.xcworkspace/contents.xcworkspacedata b/Examples/Cocoapods/ContainerController_Example.xcworkspace/contents.xcworkspacedata
similarity index 60%
rename from Example/ContainerControllerSwift.xcworkspace/contents.xcworkspacedata
rename to Examples/Cocoapods/ContainerController_Example.xcworkspace/contents.xcworkspacedata
index 7f1e1bb..419d240 100644
--- a/Example/ContainerControllerSwift.xcworkspace/contents.xcworkspacedata
+++ b/Examples/Cocoapods/ContainerController_Example.xcworkspace/contents.xcworkspacedata
@@ -2,10 +2,7 @@
-
-
+ location = "group:ContainerController_Example.xcodeproj">
diff --git a/Examples/Cocoapods/ContainerController_Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Examples/Cocoapods/ContainerController_Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/Examples/Cocoapods/ContainerController_Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/Examples/Cocoapods/Podfile b/Examples/Cocoapods/Podfile
new file mode 100644
index 0000000..03af12c
--- /dev/null
+++ b/Examples/Cocoapods/Podfile
@@ -0,0 +1,17 @@
+# Min target
+platform :ios, '13.0'
+
+# Pod install settings
+use_modular_headers!
+use_frameworks!
+
+target 'ContainerControllerSwift_Example' do
+ # define relative path to root where podspec lives
+ pod 'ContainerController', :path => '../../'
+
+# disable until we have tests
+# target 'ContainerControllerSwift_Tests' do
+# inherit! :search_paths
+#
+# end
+end
diff --git a/Examples/Cocoapods/Podfile.lock b/Examples/Cocoapods/Podfile.lock
new file mode 100644
index 0000000..4a36b4f
--- /dev/null
+++ b/Examples/Cocoapods/Podfile.lock
@@ -0,0 +1,16 @@
+PODS:
+ - ContainerController (2.0.0)
+
+DEPENDENCIES:
+ - ContainerController (from `../../`)
+
+EXTERNAL SOURCES:
+ ContainerController:
+ :path: "../../"
+
+SPEC CHECKSUMS:
+ ContainerController: f4aa108440ce8e4166e18eac91e331cf0d975ef8
+
+PODFILE CHECKSUM: 7cc237e445adb6858d69cdbb0dd04920aebcb64e
+
+COCOAPODS: 1.11.2
diff --git a/Example/Pods/Local Podspecs/ContainerControllerSwift.podspec.json b/Examples/Cocoapods/Pods/Local Podspecs/ContainerController.podspec.json
similarity index 66%
rename from Example/Pods/Local Podspecs/ContainerControllerSwift.podspec.json
rename to Examples/Cocoapods/Pods/Local Podspecs/ContainerController.podspec.json
index c1d89d6..4982ce0 100644
--- a/Example/Pods/Local Podspecs/ContainerControllerSwift.podspec.json
+++ b/Examples/Cocoapods/Pods/Local Podspecs/ContainerController.podspec.json
@@ -1,6 +1,6 @@
{
- "name": "ContainerControllerSwift",
- "version": "1.0.0",
+ "name": "ContainerController",
+ "version": "2.0.0",
"summary": "This is a swipe-panel from application: https://www.apple.com/ios/maps/",
"description": "TODO: Add long description of the pod here.\n'This is a swipe-panel from application: https://www.apple.com/ios/maps/'",
"homepage": "https://github.com/mrustaa/ContainerController",
@@ -9,16 +9,16 @@
"file": "LICENSE"
},
"authors": {
- "rustamburger@gmail.com": "rustamburger@gmail.com"
+ "mrustaa": "rustamburger@gmail.com"
},
"source": {
"git": "https://github.com/mrustaa/ContainerController.git",
- "tag": "1.0.0"
+ "tag": "2.0.0"
},
- "swift_versions": "5.2.4",
+ "swift_versions": "5.2",
"platforms": {
"ios": "13.0"
},
- "source_files": "ContainerControllerSwift/**/*.{swift}",
- "swift_version": "5.2.4"
+ "source_files": "Sources/**/*.{swift}",
+ "swift_version": "5.2"
}
diff --git a/Examples/Cocoapods/Pods/Manifest.lock b/Examples/Cocoapods/Pods/Manifest.lock
new file mode 100644
index 0000000..4a36b4f
--- /dev/null
+++ b/Examples/Cocoapods/Pods/Manifest.lock
@@ -0,0 +1,16 @@
+PODS:
+ - ContainerController (2.0.0)
+
+DEPENDENCIES:
+ - ContainerController (from `../../`)
+
+EXTERNAL SOURCES:
+ ContainerController:
+ :path: "../../"
+
+SPEC CHECKSUMS:
+ ContainerController: f4aa108440ce8e4166e18eac91e331cf0d975ef8
+
+PODFILE CHECKSUM: 7cc237e445adb6858d69cdbb0dd04920aebcb64e
+
+COCOAPODS: 1.11.2
diff --git a/Examples/Cocoapods/Pods/Pods.xcodeproj/project.pbxproj b/Examples/Cocoapods/Pods/Pods.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..21d7240
--- /dev/null
+++ b/Examples/Cocoapods/Pods/Pods.xcodeproj/project.pbxproj
@@ -0,0 +1,688 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1DAC816558EB745816237F9895546817 /* TableAdapterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 150727A8D169894B431012EBB045ACEF /* TableAdapterTypes.swift */; };
+ 204891DE50C0B68BFDD3D8C3148E09B7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
+ 3D0B29DDC167B05ABFA3359DD263BE21 /* ContainerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5461FBA3829045C8CA3528481DA96186 /* ContainerController.swift */; };
+ 4E800250098624F3D2931BD703A38EFC /* ContainerControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02A95E9AF5F835D9B80CC6E0B6F3D4A9 /* ContainerControllerDelegate.swift */; };
+ 6DE8D0B31BB0EBAD68C73516D91B7192 /* TableAdapterCellData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CBE7A40616E0B66C0CDC2A6C5428B1C /* TableAdapterCellData.swift */; };
+ 710EB878144A1C82B65586CC18000D1C /* ContainerDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BC88AB0F57543738CA7EB63036EEB15 /* ContainerDevice.swift */; };
+ 758F8D559C52EA39EE85DA1640B9D214 /* ContainerLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = E22626F54CC0E5DB2F6BB0E1C8631089 /* ContainerLayout.swift */; };
+ 76A737114BA1E8884C8811B9B263FAD7 /* TableAdapterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB510374F8F6FA2090B60C75400C01F7 /* TableAdapterView.swift */; };
+ 79A7085B7A8FB1EEE967F21859798E1A /* Pods-ContainerControllerSwift_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C9A3D9279C25852AF14095DB91CB53EC /* Pods-ContainerControllerSwift_Example-dummy.m */; };
+ 9B3DA869D7FA9949D72B8F12B6D7F8A5 /* ContainerTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC8EEA7A4EDFDEFC726ABF0C4F18EB94 /* ContainerTypes.swift */; };
+ A6AF2029C6C5E4091275331D4F1AA54B /* TableAdapterCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D62A8C2EBF68FA81136E7825D5E63A5 /* TableAdapterCell.swift */; };
+ AD4BDE00D683D77943569029183D8659 /* ContainerController-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AEC987F6397CC7852760A78253456061 /* ContainerController-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ C347DA3690F094CA2BC3EEB3C8FE9463 /* CollectionAdapterItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB327CDEA81028344F2B87A0935AF010 /* CollectionAdapterItem.swift */; };
+ C73573FF7434C117AAF48D822F9BCBBE /* CollectionAdapterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 935328DFA9600C72DB6F33AAE3AB0452 /* CollectionAdapterTypes.swift */; };
+ CAFBB9533EDABC15D1197E44AE86E6E8 /* ContainerController-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 085EFCFDD31AFC5A19C6F1FEE0D5A7D5 /* ContainerController-dummy.m */; };
+ CB3CCBF71DF83127C0ECBDB0C62E5D29 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
+ CD20444B9E15598778ED68F8B232CFFA /* CollectionAdapterCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EE19D883CF83C12AD49BA403C1D0F80 /* CollectionAdapterCell.swift */; };
+ DCA564B675E2AB0831D1863FF7CDF7A3 /* TableAdapterItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F54A94ACE006E9E9FFF28B83DBDCBC7 /* TableAdapterItem.swift */; };
+ DF55D86BB0BB4BF1955D648E5F5E0808 /* CollectionAdapterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9C7E2E6BA77E51CE3A274EDBE375D1B /* CollectionAdapterView.swift */; };
+ F195977C0D750F01571B522935F30728 /* Pods-ContainerControllerSwift_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B0DF5A94246ECE8EF7A546C77151A61F /* Pods-ContainerControllerSwift_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ F622570CE7CB6F8312595B577D1F8328 /* ContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 575F1D1818B2F8E17FF474199F3D9FDD /* ContainerView.swift */; };
+ F69C348935EB2B44396E2F50CC6662D0 /* CollectionAdapterCellData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2BB24AD5D0FA7FB5596F648B145745A /* CollectionAdapterCellData.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 378938D185DF8BC3F751B6CDD855FD6E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 882092425188597732E4588537175EB2;
+ remoteInfo = ContainerController;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 00DAED43A2662B5CCB40113A650B6D6C /* ContainerController.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ContainerController.release.xcconfig; sourceTree = ""; };
+ 02A95E9AF5F835D9B80CC6E0B6F3D4A9 /* ContainerControllerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainerControllerDelegate.swift; path = Sources/ContainerController/ContainerControllerDelegate.swift; sourceTree = ""; };
+ 085EFCFDD31AFC5A19C6F1FEE0D5A7D5 /* ContainerController-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ContainerController-dummy.m"; sourceTree = ""; };
+ 0F9276FA72B8259F0F97712EA0C82C06 /* ContainerController.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ContainerController.modulemap; sourceTree = ""; };
+ 148A1CC4CCA9A45E6679C0483EC257F1 /* Pods-ContainerControllerSwift_Example */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-ContainerControllerSwift_Example"; path = Pods_ContainerControllerSwift_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 150727A8D169894B431012EBB045ACEF /* TableAdapterTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TableAdapterTypes.swift; sourceTree = ""; };
+ 2BC88AB0F57543738CA7EB63036EEB15 /* ContainerDevice.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainerDevice.swift; path = Sources/ContainerController/ContainerDevice.swift; sourceTree = ""; };
+ 39ECE8ED71391088CA0E94E252B369D0 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; };
+ 4B3DF361D5F217971FC217D88495E873 /* Pods-ContainerControllerSwift_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ContainerControllerSwift_Example.modulemap"; sourceTree = ""; };
+ 4EE19D883CF83C12AD49BA403C1D0F80 /* CollectionAdapterCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionAdapterCell.swift; sourceTree = ""; };
+ 5461FBA3829045C8CA3528481DA96186 /* ContainerController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainerController.swift; path = Sources/ContainerController/ContainerController.swift; sourceTree = ""; };
+ 575F1D1818B2F8E17FF474199F3D9FDD /* ContainerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainerView.swift; path = Sources/ContainerController/ContainerView.swift; sourceTree = ""; };
+ 5CBE7A40616E0B66C0CDC2A6C5428B1C /* TableAdapterCellData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TableAdapterCellData.swift; sourceTree = ""; };
+ 65304361A43FF8DF0160510DDAD8265C /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; };
+ 66BC8A8A9BA4587E10D4DF039EEEF316 /* Pods-ContainerControllerSwift_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ContainerControllerSwift_Example-acknowledgements.plist"; sourceTree = ""; };
+ 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
+ 7F54A94ACE006E9E9FFF28B83DBDCBC7 /* TableAdapterItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TableAdapterItem.swift; sourceTree = ""; };
+ 85FE62EC7FA6D80260D38BC3FA729D19 /* ContainerController-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ContainerController-Info.plist"; sourceTree = ""; };
+ 8D62A8C2EBF68FA81136E7825D5E63A5 /* TableAdapterCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TableAdapterCell.swift; sourceTree = ""; };
+ 91163D723D4DF7A036E4CD310327594D /* Pods-ContainerControllerSwift_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ContainerControllerSwift_Example-acknowledgements.markdown"; sourceTree = ""; };
+ 935328DFA9600C72DB6F33AAE3AB0452 /* CollectionAdapterTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionAdapterTypes.swift; sourceTree = ""; };
+ 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+ 9E921994AC32E7E866647F85478FE53C /* ContainerController-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ContainerController-prefix.pch"; sourceTree = ""; };
+ A9C7E2E6BA77E51CE3A274EDBE375D1B /* CollectionAdapterView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionAdapterView.swift; sourceTree = ""; };
+ AEC987F6397CC7852760A78253456061 /* ContainerController-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ContainerController-umbrella.h"; sourceTree = ""; };
+ B0DF5A94246ECE8EF7A546C77151A61F /* Pods-ContainerControllerSwift_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ContainerControllerSwift_Example-umbrella.h"; sourceTree = ""; };
+ B2BB24AD5D0FA7FB5596F648B145745A /* CollectionAdapterCellData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionAdapterCellData.swift; sourceTree = ""; };
+ BC8EEA7A4EDFDEFC726ABF0C4F18EB94 /* ContainerTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainerTypes.swift; path = Sources/ContainerController/ContainerTypes.swift; sourceTree = ""; };
+ BF045C843677C52C0626BE1855378B77 /* Pods-ContainerControllerSwift_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ContainerControllerSwift_Example-Info.plist"; sourceTree = ""; };
+ C9A3D9279C25852AF14095DB91CB53EC /* Pods-ContainerControllerSwift_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ContainerControllerSwift_Example-dummy.m"; sourceTree = ""; };
+ CCDC052A5444DC073F6960AC79497FF9 /* Pods-ContainerControllerSwift_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ContainerControllerSwift_Example-frameworks.sh"; sourceTree = ""; };
+ DB327CDEA81028344F2B87A0935AF010 /* CollectionAdapterItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionAdapterItem.swift; sourceTree = ""; };
+ E22626F54CC0E5DB2F6BB0E1C8631089 /* ContainerLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainerLayout.swift; path = Sources/ContainerController/ContainerLayout.swift; sourceTree = ""; };
+ E251377D8AD727939F93F0EF8E3D8F22 /* ContainerController.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = ContainerController.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+ E4F5E149082C241D496461F80EBDE36C /* ContainerController.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ContainerController.debug.xcconfig; sourceTree = ""; };
+ EF84425CF344CAE5159D598C92BBE331 /* ContainerController */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ContainerController; path = ContainerController.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ F4EDDA4E80F5822B461FB328054A0BCD /* Pods-ContainerControllerSwift_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ContainerControllerSwift_Example.release.xcconfig"; sourceTree = ""; };
+ FB510374F8F6FA2090B60C75400C01F7 /* TableAdapterView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TableAdapterView.swift; sourceTree = ""; };
+ FF688B30D38397C8FD30DB08BCD59D63 /* Pods-ContainerControllerSwift_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ContainerControllerSwift_Example.debug.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 39A630251E8A1E2BA5A1A76B3E46728A /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ CB3CCBF71DF83127C0ECBDB0C62E5D29 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ CFD4C9FFC61A9AFE9E7B89A5C584F4CA /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 204891DE50C0B68BFDD3D8C3148E09B7 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 1A77A80FEA6DA68A7B1C648ADA354B10 /* ContainerController */ = {
+ isa = PBXGroup;
+ children = (
+ 5461FBA3829045C8CA3528481DA96186 /* ContainerController.swift */,
+ 02A95E9AF5F835D9B80CC6E0B6F3D4A9 /* ContainerControllerDelegate.swift */,
+ 2BC88AB0F57543738CA7EB63036EEB15 /* ContainerDevice.swift */,
+ E22626F54CC0E5DB2F6BB0E1C8631089 /* ContainerLayout.swift */,
+ BC8EEA7A4EDFDEFC726ABF0C4F18EB94 /* ContainerTypes.swift */,
+ 575F1D1818B2F8E17FF474199F3D9FDD /* ContainerView.swift */,
+ 5D5329F437B7B21FB796F0EF6555A00D /* ContainerCollection */,
+ 8B203735F79DB7F54A3554B4BCE5D571 /* ContainerTable */,
+ 4AFF0DDA23B4B69B7612F2A95A91C8DD /* Pod */,
+ 3C97DEF3B1720CFA7F84E9BD910BF984 /* Support Files */,
+ );
+ name = ContainerController;
+ path = ../../..;
+ sourceTree = "";
+ };
+ 2FF2EF6720C90C2A0108561DD5C65CDF /* Targets Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ 561DF8E8D2C037334968B44FF024CDDF /* Pods-ContainerControllerSwift_Example */,
+ );
+ name = "Targets Support Files";
+ sourceTree = "";
+ };
+ 3C97DEF3B1720CFA7F84E9BD910BF984 /* Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ 0F9276FA72B8259F0F97712EA0C82C06 /* ContainerController.modulemap */,
+ 085EFCFDD31AFC5A19C6F1FEE0D5A7D5 /* ContainerController-dummy.m */,
+ 85FE62EC7FA6D80260D38BC3FA729D19 /* ContainerController-Info.plist */,
+ 9E921994AC32E7E866647F85478FE53C /* ContainerController-prefix.pch */,
+ AEC987F6397CC7852760A78253456061 /* ContainerController-umbrella.h */,
+ E4F5E149082C241D496461F80EBDE36C /* ContainerController.debug.xcconfig */,
+ 00DAED43A2662B5CCB40113A650B6D6C /* ContainerController.release.xcconfig */,
+ );
+ name = "Support Files";
+ path = "Examples/Cocoapods/Pods/Target Support Files/ContainerController";
+ sourceTree = "";
+ };
+ 4AFF0DDA23B4B69B7612F2A95A91C8DD /* Pod */ = {
+ isa = PBXGroup;
+ children = (
+ E251377D8AD727939F93F0EF8E3D8F22 /* ContainerController.podspec */,
+ 65304361A43FF8DF0160510DDAD8265C /* LICENSE */,
+ 39ECE8ED71391088CA0E94E252B369D0 /* README.md */,
+ );
+ name = Pod;
+ sourceTree = "";
+ };
+ 561DF8E8D2C037334968B44FF024CDDF /* Pods-ContainerControllerSwift_Example */ = {
+ isa = PBXGroup;
+ children = (
+ 4B3DF361D5F217971FC217D88495E873 /* Pods-ContainerControllerSwift_Example.modulemap */,
+ 91163D723D4DF7A036E4CD310327594D /* Pods-ContainerControllerSwift_Example-acknowledgements.markdown */,
+ 66BC8A8A9BA4587E10D4DF039EEEF316 /* Pods-ContainerControllerSwift_Example-acknowledgements.plist */,
+ C9A3D9279C25852AF14095DB91CB53EC /* Pods-ContainerControllerSwift_Example-dummy.m */,
+ CCDC052A5444DC073F6960AC79497FF9 /* Pods-ContainerControllerSwift_Example-frameworks.sh */,
+ BF045C843677C52C0626BE1855378B77 /* Pods-ContainerControllerSwift_Example-Info.plist */,
+ B0DF5A94246ECE8EF7A546C77151A61F /* Pods-ContainerControllerSwift_Example-umbrella.h */,
+ FF688B30D38397C8FD30DB08BCD59D63 /* Pods-ContainerControllerSwift_Example.debug.xcconfig */,
+ F4EDDA4E80F5822B461FB328054A0BCD /* Pods-ContainerControllerSwift_Example.release.xcconfig */,
+ );
+ name = "Pods-ContainerControllerSwift_Example";
+ path = "Target Support Files/Pods-ContainerControllerSwift_Example";
+ sourceTree = "";
+ };
+ 578452D2E740E91742655AC8F1636D1F /* iOS */ = {
+ isa = PBXGroup;
+ children = (
+ 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */,
+ );
+ name = iOS;
+ sourceTree = "";
+ };
+ 5D5329F437B7B21FB796F0EF6555A00D /* ContainerCollection */ = {
+ isa = PBXGroup;
+ children = (
+ 4EE19D883CF83C12AD49BA403C1D0F80 /* CollectionAdapterCell.swift */,
+ B2BB24AD5D0FA7FB5596F648B145745A /* CollectionAdapterCellData.swift */,
+ DB327CDEA81028344F2B87A0935AF010 /* CollectionAdapterItem.swift */,
+ 935328DFA9600C72DB6F33AAE3AB0452 /* CollectionAdapterTypes.swift */,
+ A9C7E2E6BA77E51CE3A274EDBE375D1B /* CollectionAdapterView.swift */,
+ );
+ name = ContainerCollection;
+ path = Sources/ContainerController/ContainerCollection;
+ sourceTree = "";
+ };
+ 6E7F2899038484816E6B4E9E4247337A /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ EF84425CF344CAE5159D598C92BBE331 /* ContainerController */,
+ 148A1CC4CCA9A45E6679C0483EC257F1 /* Pods-ContainerControllerSwift_Example */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 8B203735F79DB7F54A3554B4BCE5D571 /* ContainerTable */ = {
+ isa = PBXGroup;
+ children = (
+ 8D62A8C2EBF68FA81136E7825D5E63A5 /* TableAdapterCell.swift */,
+ 5CBE7A40616E0B66C0CDC2A6C5428B1C /* TableAdapterCellData.swift */,
+ 7F54A94ACE006E9E9FFF28B83DBDCBC7 /* TableAdapterItem.swift */,
+ 150727A8D169894B431012EBB045ACEF /* TableAdapterTypes.swift */,
+ FB510374F8F6FA2090B60C75400C01F7 /* TableAdapterView.swift */,
+ );
+ name = ContainerTable;
+ path = Sources/ContainerController/ContainerTable;
+ sourceTree = "";
+ };
+ CF1408CF629C7361332E53B88F7BD30C = {
+ isa = PBXGroup;
+ children = (
+ 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
+ D9B3B35B41AA9105A0B28016935EC50B /* Development Pods */,
+ D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */,
+ 6E7F2899038484816E6B4E9E4247337A /* Products */,
+ 2FF2EF6720C90C2A0108561DD5C65CDF /* Targets Support Files */,
+ );
+ sourceTree = "";
+ };
+ D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 578452D2E740E91742655AC8F1636D1F /* iOS */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ D9B3B35B41AA9105A0B28016935EC50B /* Development Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 1A77A80FEA6DA68A7B1C648ADA354B10 /* ContainerController */,
+ );
+ name = "Development Pods";
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ 6BABEA4BEA2114C9DC42356CF56BC5B3 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AD4BDE00D683D77943569029183D8659 /* ContainerController-umbrella.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 8EBD4816A38F5B7458EBD3C91D72A3FD /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ F195977C0D750F01571B522935F30728 /* Pods-ContainerControllerSwift_Example-umbrella.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ 882092425188597732E4588537175EB2 /* ContainerController */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = B45D85EA6A6412729DF815ABB5805BCD /* Build configuration list for PBXNativeTarget "ContainerController" */;
+ buildPhases = (
+ 6BABEA4BEA2114C9DC42356CF56BC5B3 /* Headers */,
+ 40F0910897CBD97F4C73357DEB796086 /* Sources */,
+ 39A630251E8A1E2BA5A1A76B3E46728A /* Frameworks */,
+ 22F3757B0A4FA73433FA1F12E6A068DA /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = ContainerController;
+ productName = ContainerController;
+ productReference = EF84425CF344CAE5159D598C92BBE331 /* ContainerController */;
+ productType = "com.apple.product-type.framework";
+ };
+ CE197115FA4CB443FE4917D7ACF96849 /* Pods-ContainerControllerSwift_Example */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = F9338735F2BD50F7CCD82BB9869EE841 /* Build configuration list for PBXNativeTarget "Pods-ContainerControllerSwift_Example" */;
+ buildPhases = (
+ 8EBD4816A38F5B7458EBD3C91D72A3FD /* Headers */,
+ 8DBC33988A6688EE272EF1172913D4A2 /* Sources */,
+ CFD4C9FFC61A9AFE9E7B89A5C584F4CA /* Frameworks */,
+ 1753D7008E48627D9AAAD7312468068F /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 21140E5498EFD08B37B6D8E9CFB63C53 /* PBXTargetDependency */,
+ );
+ name = "Pods-ContainerControllerSwift_Example";
+ productName = Pods_ContainerControllerSwift_Example;
+ productReference = 148A1CC4CCA9A45E6679C0483EC257F1 /* Pods-ContainerControllerSwift_Example */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ BFDFE7DC352907FC980B868725387E98 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 1240;
+ LastUpgradeCheck = 1240;
+ };
+ buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ Base,
+ en,
+ );
+ mainGroup = CF1408CF629C7361332E53B88F7BD30C;
+ productRefGroup = 6E7F2899038484816E6B4E9E4247337A /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 882092425188597732E4588537175EB2 /* ContainerController */,
+ CE197115FA4CB443FE4917D7ACF96849 /* Pods-ContainerControllerSwift_Example */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 1753D7008E48627D9AAAD7312468068F /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 22F3757B0A4FA73433FA1F12E6A068DA /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 40F0910897CBD97F4C73357DEB796086 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ CD20444B9E15598778ED68F8B232CFFA /* CollectionAdapterCell.swift in Sources */,
+ F69C348935EB2B44396E2F50CC6662D0 /* CollectionAdapterCellData.swift in Sources */,
+ C347DA3690F094CA2BC3EEB3C8FE9463 /* CollectionAdapterItem.swift in Sources */,
+ C73573FF7434C117AAF48D822F9BCBBE /* CollectionAdapterTypes.swift in Sources */,
+ DF55D86BB0BB4BF1955D648E5F5E0808 /* CollectionAdapterView.swift in Sources */,
+ 3D0B29DDC167B05ABFA3359DD263BE21 /* ContainerController.swift in Sources */,
+ CAFBB9533EDABC15D1197E44AE86E6E8 /* ContainerController-dummy.m in Sources */,
+ 4E800250098624F3D2931BD703A38EFC /* ContainerControllerDelegate.swift in Sources */,
+ 710EB878144A1C82B65586CC18000D1C /* ContainerDevice.swift in Sources */,
+ 758F8D559C52EA39EE85DA1640B9D214 /* ContainerLayout.swift in Sources */,
+ 9B3DA869D7FA9949D72B8F12B6D7F8A5 /* ContainerTypes.swift in Sources */,
+ F622570CE7CB6F8312595B577D1F8328 /* ContainerView.swift in Sources */,
+ A6AF2029C6C5E4091275331D4F1AA54B /* TableAdapterCell.swift in Sources */,
+ 6DE8D0B31BB0EBAD68C73516D91B7192 /* TableAdapterCellData.swift in Sources */,
+ DCA564B675E2AB0831D1863FF7CDF7A3 /* TableAdapterItem.swift in Sources */,
+ 1DAC816558EB745816237F9895546817 /* TableAdapterTypes.swift in Sources */,
+ 76A737114BA1E8884C8811B9B263FAD7 /* TableAdapterView.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 8DBC33988A6688EE272EF1172913D4A2 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 79A7085B7A8FB1EEE967F21859798E1A /* Pods-ContainerControllerSwift_Example-dummy.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 21140E5498EFD08B37B6D8E9CFB63C53 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = ContainerController;
+ target = 882092425188597732E4588537175EB2 /* ContainerController */;
+ targetProxy = 378938D185DF8BC3F751B6CDD855FD6E /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ 18BF8FB5E1BCDDBC56BF8553776CAD49 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E4F5E149082C241D496461F80EBDE36C /* ContainerController.debug.xcconfig */;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_PREFIX_HEADER = "Target Support Files/ContainerController/ContainerController-prefix.pch";
+ INFOPLIST_FILE = "Target Support Files/ContainerController/ContainerController-Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MODULEMAP_FILE = "Target Support Files/ContainerController/ContainerController.modulemap";
+ PRODUCT_MODULE_NAME = ContainerController;
+ PRODUCT_NAME = ContainerController;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_VERSION = 5.2;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Debug;
+ };
+ 53066039CB13C51735E5F2D3874D1F58 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 00DAED43A2662B5CCB40113A650B6D6C /* ContainerController.release.xcconfig */;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_PREFIX_HEADER = "Target Support Files/ContainerController/ContainerController-prefix.pch";
+ INFOPLIST_FILE = "Target Support Files/ContainerController/ContainerController-Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MODULEMAP_FILE = "Target Support Files/ContainerController/ContainerController.modulemap";
+ PRODUCT_MODULE_NAME = ContainerController;
+ PRODUCT_NAME = ContainerController;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_VERSION = 5.2;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Release;
+ };
+ 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = 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_DOCUMENTATION_COMMENTS = YES;
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "POD_CONFIGURATION_DEBUG=1",
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ 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 = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ STRIP_INSTALLED_PRODUCT = NO;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ SYMROOT = "${SRCROOT}/../build";
+ };
+ name = Debug;
+ };
+ 9A550E91E83061C7A82D525EF9AFDE5A /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = FF688B30D38397C8FD30DB08BCD59D63 /* Pods-ContainerControllerSwift_Example.debug.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
+ ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = "Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MACH_O_TYPE = staticlib;
+ MODULEMAP_FILE = "Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.modulemap";
+ OTHER_LDFLAGS = "";
+ OTHER_LIBTOOLFLAGS = "";
+ PODS_ROOT = "$(SRCROOT)";
+ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Debug;
+ };
+ 9E406C6AAF85E580207CD97B0044DEAB /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = 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_DOCUMENTATION_COMMENTS = YES;
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "POD_CONFIGURATION_RELEASE=1",
+ "$(inherited)",
+ );
+ 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;
+ MTL_FAST_MATH = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ STRIP_INSTALLED_PRODUCT = NO;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = 5.0;
+ SYMROOT = "${SRCROOT}/../build";
+ };
+ name = Release;
+ };
+ CC0974C27038FC255E0A9C96B62429B7 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = F4EDDA4E80F5822B461FB328054A0BCD /* Pods-ContainerControllerSwift_Example.release.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
+ ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = "Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MACH_O_TYPE = staticlib;
+ MODULEMAP_FILE = "Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.modulemap";
+ OTHER_LDFLAGS = "";
+ OTHER_LIBTOOLFLAGS = "";
+ PODS_ROOT = "$(SRCROOT)";
+ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */,
+ 9E406C6AAF85E580207CD97B0044DEAB /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ B45D85EA6A6412729DF815ABB5805BCD /* Build configuration list for PBXNativeTarget "ContainerController" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 18BF8FB5E1BCDDBC56BF8553776CAD49 /* Debug */,
+ 53066039CB13C51735E5F2D3874D1F58 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ F9338735F2BD50F7CCD82BB9869EE841 /* Build configuration list for PBXNativeTarget "Pods-ContainerControllerSwift_Example" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 9A550E91E83061C7A82D525EF9AFDE5A /* Debug */,
+ CC0974C27038FC255E0A9C96B62429B7 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+}
diff --git a/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-Info.plist b/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-Info.plist
similarity index 96%
rename from Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-Info.plist
rename to Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-Info.plist
index 2243fe6..0a12077 100644
--- a/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-Info.plist
+++ b/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
FMWK
CFBundleShortVersionString
- 1.0.0
+ 2.0.0
CFBundleSignature
????
CFBundleVersion
diff --git a/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-dummy.m b/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-dummy.m
new file mode 100644
index 0000000..a639f48
--- /dev/null
+++ b/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_ContainerController : NSObject
+@end
+@implementation PodsDummy_ContainerController
+@end
diff --git a/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-prefix.pch b/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-prefix.pch
similarity index 100%
rename from Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-prefix.pch
rename to Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-prefix.pch
diff --git a/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-umbrella.h b/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-umbrella.h
similarity index 57%
rename from Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-umbrella.h
rename to Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-umbrella.h
index d65005e..6b5a9b8 100644
--- a/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-umbrella.h
+++ b/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-umbrella.h
@@ -11,6 +11,6 @@
#endif
-FOUNDATION_EXPORT double ContainerControllerSwiftVersionNumber;
-FOUNDATION_EXPORT const unsigned char ContainerControllerSwiftVersionString[];
+FOUNDATION_EXPORT double ContainerControllerVersionNumber;
+FOUNDATION_EXPORT const unsigned char ContainerControllerVersionString[];
diff --git a/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.debug.xcconfig b/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController.debug.xcconfig
similarity index 60%
rename from Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.debug.xcconfig
rename to Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController.debug.xcconfig
index 15093a9..7b70b05 100644
--- a/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.debug.xcconfig
+++ b/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController.debug.xcconfig
@@ -1,10 +1,13 @@
-CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ContainerControllerSwift
+CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
+CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ContainerController
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
+LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
-PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
+PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../..
+PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
diff --git a/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController.modulemap b/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController.modulemap
new file mode 100644
index 0000000..1f9f683
--- /dev/null
+++ b/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController.modulemap
@@ -0,0 +1,6 @@
+framework module ContainerController {
+ umbrella header "ContainerController-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.release.xcconfig b/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController.release.xcconfig
similarity index 60%
rename from Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.release.xcconfig
rename to Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController.release.xcconfig
index 15093a9..7b70b05 100644
--- a/Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.release.xcconfig
+++ b/Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController.release.xcconfig
@@ -1,10 +1,13 @@
-CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ContainerControllerSwift
+CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
+CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ContainerController
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
+LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
-PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
+PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../..
+PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-Info.plist b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-Info.plist
similarity index 100%
rename from Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-Info.plist
rename to Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-Info.plist
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.markdown b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.markdown
similarity index 97%
rename from Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.markdown
rename to Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.markdown
index 5784dea..d4957ff 100644
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.markdown
+++ b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.markdown
@@ -1,7 +1,7 @@
# Acknowledgements
This application makes use of the following third party libraries:
-## ContainerControllerSwift
+## ContainerController
Copyright (c) 2020 rustamburger@gmail.com
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.plist b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.plist
similarity index 97%
rename from Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.plist
rename to Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.plist
index 334c601..f9a3940 100644
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.plist
+++ b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.plist
@@ -37,7 +37,7 @@ THE SOFTWARE.
License
MIT
Title
- ContainerControllerSwift
+ ContainerController
Type
PSGroupSpecifier
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-dummy.m b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-dummy.m
similarity index 100%
rename from Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-dummy.m
rename to Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-dummy.m
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-frameworks.sh b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-frameworks.sh
similarity index 87%
rename from Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-frameworks.sh
rename to Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-frameworks.sh
index da409d4..c82df73 100755
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-frameworks.sh
+++ b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-frameworks.sh
@@ -19,9 +19,8 @@ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
+BCSYMBOLMAP_DIR="BCSymbolMaps"
-# Used as a return value for each invocation of `strip_invalid_archs` function.
-STRIP_BINARY_RETVAL=0
# This protects against multiple targets copying the same framework dependency at the same time. The solution
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
@@ -45,6 +44,16 @@ install_framework()
source="$(readlink "${source}")"
fi
+ if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then
+ # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied
+ find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do
+ echo "Installing $f"
+ install_bcsymbolmap "$f" "$destination"
+ rm "$f"
+ done
+ rmdir "${source}/${BCSYMBOLMAP_DIR}"
+ fi
+
# Use filter instead of exclude so missing patterns don't throw errors.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
@@ -80,7 +89,6 @@ install_framework()
done
fi
}
-
# Copies and strips a vendored dSYM
install_dsym() {
local source="$1"
@@ -95,44 +103,24 @@ install_dsym() {
binary_name="$(ls "$source/Contents/Resources/DWARF")"
binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}"
- # Strip invalid architectures so "fat" simulator / device frameworks work on device
+ # Strip invalid architectures from the dSYM.
if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then
strip_invalid_archs "$binary" "$warn_missing_arch"
fi
-
- if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
+ if [[ $STRIP_BINARY_RETVAL == 0 ]]; then
# Move the stripped file into its final destination.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
else
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
+ mkdir -p "${DWARF_DSYM_FOLDER_PATH}"
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM"
fi
fi
}
-# Copies the bcsymbolmap files of a vendored framework
-install_bcsymbolmap() {
- local bcsymbolmap_path="$1"
- local destination="${BUILT_PRODUCTS_DIR}"
- echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}""
- rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"
-}
-
-# Signs a framework with the provided identity
-code_sign_if_enabled() {
- if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
- # Use the current code_sign_identity
- echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
- local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
-
- if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
- code_sign_cmd="$code_sign_cmd &"
- fi
- echo "$code_sign_cmd"
- eval "$code_sign_cmd"
- fi
-}
+# Used as a return value for each invocation of `strip_invalid_archs` function.
+STRIP_BINARY_RETVAL=0
# Strip invalid architectures
strip_invalid_archs() {
@@ -147,7 +135,7 @@ strip_invalid_archs() {
if [[ "$warn_missing_arch" == "true" ]]; then
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
fi
- STRIP_BINARY_RETVAL=0
+ STRIP_BINARY_RETVAL=1
return
fi
stripped=""
@@ -161,46 +149,37 @@ strip_invalid_archs() {
if [[ "$stripped" ]]; then
echo "Stripped $binary of architectures:$stripped"
fi
- STRIP_BINARY_RETVAL=1
+ STRIP_BINARY_RETVAL=0
}
-install_artifact() {
- artifact="$1"
- base="$(basename "$artifact")"
- case $base in
- *.framework)
- install_framework "$artifact"
- ;;
- *.dSYM)
- # Suppress arch warnings since XCFrameworks will include many dSYM files
- install_dsym "$artifact" "false"
- ;;
- *.bcsymbolmap)
- install_bcsymbolmap "$artifact"
- ;;
- *)
- echo "error: Unrecognized artifact "$artifact""
- ;;
- esac
+# Copies the bcsymbolmap files of a vendored framework
+install_bcsymbolmap() {
+ local bcsymbolmap_path="$1"
+ local destination="${BUILT_PRODUCTS_DIR}"
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}""
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"
}
-copy_artifacts() {
- file_list="$1"
- while read artifact; do
- install_artifact "$artifact"
- done <$file_list
-}
+# Signs a framework with the provided identity
+code_sign_if_enabled() {
+ if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
+ # Use the current code_sign_identity
+ echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
+ local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
-ARTIFACT_LIST_FILE="${BUILT_PRODUCTS_DIR}/cocoapods-artifacts-${CONFIGURATION}.txt"
-if [ -r "${ARTIFACT_LIST_FILE}" ]; then
- copy_artifacts "${ARTIFACT_LIST_FILE}"
-fi
+ if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
+ code_sign_cmd="$code_sign_cmd &"
+ fi
+ echo "$code_sign_cmd"
+ eval "$code_sign_cmd"
+ fi
+}
if [[ "$CONFIGURATION" == "Debug" ]]; then
- install_framework "${BUILT_PRODUCTS_DIR}/ContainerControllerSwift/ContainerControllerSwift.framework"
+ install_framework "${BUILT_PRODUCTS_DIR}/ContainerController/ContainerController.framework"
fi
if [[ "$CONFIGURATION" == "Release" ]]; then
- install_framework "${BUILT_PRODUCTS_DIR}/ContainerControllerSwift/ContainerControllerSwift.framework"
+ install_framework "${BUILT_PRODUCTS_DIR}/ContainerController/ContainerController.framework"
fi
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
wait
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-umbrella.h b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-umbrella.h
similarity index 100%
rename from Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-umbrella.h
rename to Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-umbrella.h
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.debug.xcconfig b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.debug.xcconfig
similarity index 50%
rename from Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.debug.xcconfig
rename to Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.debug.xcconfig
index cedf0a1..c1b0d6a 100644
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.debug.xcconfig
+++ b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.debug.xcconfig
@@ -1,12 +1,15 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ContainerControllerSwift"
+CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ContainerController"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ContainerControllerSwift/ContainerControllerSwift.framework/Headers"
-LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
-OTHER_LDFLAGS = $(inherited) -framework "ContainerControllerSwift"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ContainerController/ContainerController.framework/Headers"
+LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
+LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
+OTHER_LDFLAGS = $(inherited) -framework "ContainerController"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods
+PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.modulemap b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.modulemap
similarity index 100%
rename from Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.modulemap
rename to Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.modulemap
diff --git a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.release.xcconfig b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.release.xcconfig
similarity index 50%
rename from Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.release.xcconfig
rename to Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.release.xcconfig
index cedf0a1..c1b0d6a 100644
--- a/Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.release.xcconfig
+++ b/Examples/Cocoapods/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.release.xcconfig
@@ -1,12 +1,15 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ContainerControllerSwift"
+CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ContainerController"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ContainerControllerSwift/ContainerControllerSwift.framework/Headers"
-LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
-OTHER_LDFLAGS = $(inherited) -framework "ContainerControllerSwift"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ContainerController/ContainerController.framework/Headers"
+LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
+LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
+OTHER_LDFLAGS = $(inherited) -framework "ContainerController"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods
+PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/AppDelegate.swift b/Examples/SwiftPM/ContainerController/ContainerController/AppDelegate.swift
new file mode 100644
index 0000000..cfefe01
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/AppDelegate.swift
@@ -0,0 +1,46 @@
+//
+// AppDelegate.swift
+// ContainerController
+//
+// 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/Examples/SwiftPM/ContainerController/ContainerController/ExampleAddCollectionView/ExampleAddCollectionViewController.storyboard b/Examples/SwiftPM/ContainerController/ContainerController/ExampleAddCollectionView/ExampleAddCollectionViewController.storyboard
new file mode 100644
index 0000000..12294f8
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExampleAddCollectionView/ExampleAddCollectionViewController.storyboard
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/ExampleAddCollectionView/ExampleAddCollectionViewController.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExampleAddCollectionView/ExampleAddCollectionViewController.swift
new file mode 100644
index 0000000..0975ee4
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExampleAddCollectionView/ExampleAddCollectionViewController.swift
@@ -0,0 +1,116 @@
+//
+// ExampleAddCollectionViewController.swift
+// ContainerController
+//
+// Created by mrustaa on 09.06.2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesAddTableView/ExampleAddTableViewController.storyboard b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesAddTableView/ExampleAddTableViewController.storyboard
new file mode 100644
index 0000000..fbf62ed
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesAddTableView/ExampleAddTableViewController.storyboard
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/ExamplesAddTableView/ExampleAddTableViewController.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesAddTableView/ExampleAddTableViewController.swift
new file mode 100644
index 0000000..bd00e05
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesAddTableView/ExampleAddTableViewController.swift
@@ -0,0 +1,92 @@
+//
+// ExampleAddTableViewController.swift
+// ContainerController
+//
+// Created by mrustaa on 09.06.2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift
new file mode 100644
index 0000000..3defb48
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift
@@ -0,0 +1,92 @@
+//
+// ExampleAddTableViewControllerSettings.swift
+// ContainerController
+//
+// Created by mrustaa on 09.06.2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/Container/ExamplesContainerController.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/Container/ExamplesContainerController.swift
new file mode 100644
index 0000000..7785a24
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/Container/ExamplesContainerController.swift
@@ -0,0 +1,273 @@
+//
+// ExamplesContainerController.swift
+// ContainerController
+//
+// Created by mrustaa on 31/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+
+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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/Container/ExamplesContainerControllerScrollType.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/Container/ExamplesContainerControllerScrollType.swift
new file mode 100644
index 0000000..2a67a2e
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/Container/ExamplesContainerControllerScrollType.swift
@@ -0,0 +1,25 @@
+//
+// 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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/Container/ExamplesScrollViews.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/Container/ExamplesScrollViews.swift
new file mode 100644
index 0000000..6c1e9c5
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/Container/ExamplesScrollViews.swift
@@ -0,0 +1,138 @@
+//
+// ExamplesScrollViews.swift
+// ContainerController
+//
+// Created by mrustaa on 30/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+// 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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/ExamplesSettingsViewController.storyboard b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/ExamplesSettingsViewController.storyboard
new file mode 100644
index 0000000..60f8b11
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/ExamplesSettingsViewController.storyboard
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/ExamplesSettingsViewController.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/ExamplesSettingsViewController.swift
new file mode 100644
index 0000000..43e80f0
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/ExamplesSettingsViewController.swift
@@ -0,0 +1,124 @@
+
+
+
+import UIKit
+import ContainerController
+
+
+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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleCell.swift
new file mode 100644
index 0000000..c03d3ba
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleCell.swift
@@ -0,0 +1,57 @@
+//
+// ExampleCell.swift
+// ContainerController
+//
+// Created by mrustaa on 28/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+// 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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleCellStyle.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleCellStyle.swift
new file mode 100644
index 0000000..f3648b2
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleCellStyle.swift
@@ -0,0 +1,51 @@
+//
+// ExampleCellStyle.swift
+// ContainerController
+//
+// Created by mrustaa on 02/06/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+// 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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift
new file mode 100644
index 0000000..a1d353b
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift
@@ -0,0 +1,106 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// 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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.xib
new file mode 100644
index 0000000..651089d
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.xib
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift
new file mode 100644
index 0000000..4b189a4
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift
@@ -0,0 +1,131 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// 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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.xib
new file mode 100644
index 0000000..bf8543e
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.xib
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift
new file mode 100644
index 0000000..ee96081
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift
@@ -0,0 +1,94 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// 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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.xib
new file mode 100644
index 0000000..f8999ce
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.xib
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift
new file mode 100644
index 0000000..399c771
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift
@@ -0,0 +1,117 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// 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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.xib
new file mode 100644
index 0000000..2919ec5
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.xib
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift
new file mode 100644
index 0000000..01db452
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift
@@ -0,0 +1,91 @@
+
+
+
+import UIKit
+import ContainerController
+
+
+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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.xib
new file mode 100644
index 0000000..805ebd1
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.xib
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.swift
new file mode 100644
index 0000000..c836a53
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.swift
@@ -0,0 +1,28 @@
+//
+// 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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.xib b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.xib
new file mode 100644
index 0000000..2255cef
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.xib
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift
new file mode 100644
index 0000000..c4c0a66
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift
@@ -0,0 +1,25 @@
+//
+// 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/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib
new file mode 100644
index 0000000..8d6dfbc
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/headerShadow.png b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/headerShadow.png
new file mode 100644
index 0000000..474c2be
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/headerShadow.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Framework/DesignableViews/DesignButton.swift b/Examples/SwiftPM/ContainerController/ContainerController/Framework/DesignableViews/DesignButton.swift
new file mode 100644
index 0000000..70d7004
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Framework/DesignableViews/DesignButton.swift
@@ -0,0 +1,134 @@
+
+
+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/Examples/SwiftPM/ContainerController/ContainerController/Framework/DesignableViews/DesignView.swift b/Examples/SwiftPM/ContainerController/ContainerController/Framework/DesignableViews/DesignView.swift
new file mode 100644
index 0000000..71e1f08
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Framework/DesignableViews/DesignView.swift
@@ -0,0 +1,73 @@
+
+
+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/Examples/SwiftPM/ContainerController/ContainerController/Framework/LoadNib/StoryboardController.swift b/Examples/SwiftPM/ContainerController/ContainerController/Framework/LoadNib/StoryboardController.swift
new file mode 100644
index 0000000..602a776
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Framework/LoadNib/StoryboardController.swift
@@ -0,0 +1,25 @@
+//
+// 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)
+
+ return storyboard.instantiateViewController(withIdentifier: className)
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Framework/LoadNib/XibView.swift b/Examples/SwiftPM/ContainerController/ContainerController/Framework/LoadNib/XibView.swift
new file mode 100644
index 0000000..b90f9be
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Framework/LoadNib/XibView.swift
@@ -0,0 +1,99 @@
+//
+// 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/Examples/SwiftPM/ContainerController/ContainerController/Framework/Utils/Color.swift b/Examples/SwiftPM/ContainerController/ContainerController/Framework/Utils/Color.swift
new file mode 100644
index 0000000..f8e7500
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Framework/Utils/Color.swift
@@ -0,0 +1,59 @@
+
+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/Examples/SwiftPM/ContainerController/ContainerController/Framework/Utils/UIView+Positioning.swift b/Examples/SwiftPM/ContainerController/ContainerController/Framework/Utils/UIView+Positioning.swift
new file mode 100755
index 0000000..44e3238
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Framework/Utils/UIView+Positioning.swift
@@ -0,0 +1,175 @@
+//
+// 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: - Private Methods
+ fileprivate func _pixelIntegral(_ pointValue: CGFloat) -> CGFloat {
+ let scale = UIScreen.main.scale
+ return (round(pointValue * scale) / scale)
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/Contents.json b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..7026cd1
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,116 @@
+{
+ "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/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-1024.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-1024.png
new file mode 100644
index 0000000..9a91a2a
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-1024.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20.png
new file mode 100644
index 0000000..8c6fc30
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20@2x.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20@2x.png
new file mode 100644
index 0000000..3b485f4
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20@2x.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20@3x.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20@3x.png
new file mode 100644
index 0000000..d291c85
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20@3x.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29.png
new file mode 100644
index 0000000..fde2a96
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29@2x.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29@2x.png
new file mode 100644
index 0000000..7f5d0fc
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29@2x.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29@3x.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29@3x.png
new file mode 100644
index 0000000..bf4b1fc
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29@3x.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40.png
new file mode 100644
index 0000000..3b485f4
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40@2x.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40@2x.png
new file mode 100644
index 0000000..a29417d
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40@2x.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40@3x.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40@3x.png
new file mode 100644
index 0000000..2da32a7
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40@3x.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-60@2x.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-60@2x.png
new file mode 100644
index 0000000..2da32a7
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-60@2x.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-60@3x.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-60@3x.png
new file mode 100644
index 0000000..27eef11
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-60@3x.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-76.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-76.png
new file mode 100644
index 0000000..d4d5167
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-76.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-76@2x.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-76@2x.png
new file mode 100644
index 0000000..92c338c
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-76@2x.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-83.5@2x.png b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-83.5@2x.png
new file mode 100644
index 0000000..22260f9
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-83.5@2x.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/Contents.json b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Info.plist b/Examples/SwiftPM/ContainerController/ContainerController/Info.plist
new file mode 100644
index 0000000..0c67376
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Info.plist
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Localization/LocalizationManager.swift b/Examples/SwiftPM/ContainerController/ContainerController/Localization/LocalizationManager.swift
new file mode 100644
index 0000000..1dc35be
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Localization/LocalizationManager.swift
@@ -0,0 +1,273 @@
+//
+// LocalizationManager.swift
+// KeyGroupFramework
+//
+// Created by Nikita Bondar on 22/11/2018.
+// Copyright © 2018 KeyGroup. All rights reserved.
+//
+
+import Foundation
+
+extension Notification.Name {
+ public static let kGTNotificationLanguageChanged = Notification.Name("kGTNotificationLanguageChanged")
+}
+
+open class LocalizationManager {
+
+ // MARK: - Properties
+
+ public private(set) static var locale: Locale = .current
+ public static var availableLocales: [String] = ["en"]
+
+ private static var languageCode: String = ""
+ private static var regionCode: String = ""
+ private static var languageBundle: Bundle?
+ private static var englishLanguageBundle = languageBundle(withCode: "en", andType: "lproj")
+ private static var nakedLocalizationEnabled: Bool = false
+
+ // MARK: - Static part
+
+ public static func setNakedLocalization(to value: Bool) {
+ nakedLocalizationEnabled = value
+ NotificationCenter.default.post(name: .kGTNotificationLanguageChanged, object: nil)
+ }
+
+ public static func format(key: String, values: [String]) -> String {
+ if !nakedLocalizationEnabled {
+ let key = _L(key)
+ let formatCounter = key.components(separatedBy: "%@").count - 1
+ if formatCounter != values.count {
+ return "FORMAT ERROR: \(key) -\(values)"
+ }
+
+ let args: [CVarArg] = values
+ let formattedString = withVaList(args) { NSString(format: key, arguments: $0) } as String
+
+ return formattedString
+ } else {
+ return key
+ }
+ }
+
+ public static func localizedString(_ key: String) -> String {
+ initLanguageCode()
+ if !nakedLocalizationEnabled {
+ let langCode = Locale.current.languageCode ?? "en"
+
+// languageBundle = languageBundle(withCode: languageCode, andType: "lproj")
+ languageBundle = languageBundle(withCode: langCode, andType: "lproj")
+
+ var val = languageBundle?.localizedString(forKey: key, value: key, table: nil)
+ val = val?.replacingOccurrences(of: "%s", with: "%@")
+
+ if val == key {
+ guard let englishString = englishLanguageBundle?.localizedString(forKey: key,
+ value: key,
+ table: nil) else { return key }
+ return englishString.replacingOccurrences(of: "%s", with: "%@")
+ }
+
+ return val ?? key
+ } else {
+ return key
+ }
+ }
+
+ public static func localizedTitleForCurrency(isoCode: String?) -> String {
+ if let isoCode = isoCode {
+ return self.currentLocale().displayName(forKey: .currencyCode, value: isoCode) ?? ""
+ } else {
+ return ""
+ }
+ }
+
+ public static func localizedString(forReplacedKey key: String) -> String {
+ var replaced = localizedString(key)
+ replaced = replaced.replacingOccurrences(of: "%s", with: "%@")
+ return replaced
+ }
+
+ public static func localizedString(forCount count: Float, key: String) -> String {
+ initLanguageCode()
+
+ if !nakedLocalizationEnabled {
+ let fewKey = localizedString(key.appending("_FEW"))
+ let manyKey = localizedString(key.appending("S"))
+ let singleKey = localizedString(key)
+
+ let countInt = Int(count)
+
+ if languageCode == "ru" {
+ if count < 1 && count > 0 {
+ return fewKey
+ }
+
+ let mod100 = countInt % 100
+ let mod10 = countInt % 10
+
+ switch mod10 {
+ case 1: return mod100 == 11 ? manyKey : singleKey
+ case 2, 3, 4: return mod100 > 10 && mod100 < 20 ? manyKey : fewKey
+ case 5, 6, 7, 8, 9, 0: return manyKey
+ default: return manyKey
+ }
+
+ }
+
+ return count <= 1 ? singleKey : manyKey
+ } else {
+ return key
+ }
+ }
+
+ public static func currentLanguageName() -> String {
+ initLanguageCode()
+ return languageName(withCode: languageCode)
+ }
+
+ public static func currentLanguageCode() -> String {
+ initLanguageCode()
+ return languageCode
+ }
+
+ // class func currentCurrencyCode() -> String {
+ // return ""
+ // }
+
+ public static func currentRegionCode() -> String {
+ let locale = Locale.current as NSLocale
+
+ if let country = locale.object(forKey: .countryCode) as? String {
+ return country
+ }
+
+ // writeToLog
+
+ return ""
+ }
+
+ public static func languageName(withCode code: String) -> String {
+ let locale = NSLocale(localeIdentifier: code)
+ let newCode = languageCode(withLocale: code)
+ let language = locale.displayName(forKey: .identifier, value: newCode)
+ return language ?? ""
+ }
+
+ public static func countryName(withCode code: String) -> String {
+ let locale = self.currentLocale()
+ if #available(iOS 10.0, *) {
+ // let name = locale.localizedString(forCurrencyCode: code)
+ let name = locale.displayName(forKey: .countryCode, value: code)
+ return name ?? ""
+ } else {
+ return ""
+ }
+
+ }
+
+
+ public static func currentLocale() -> NSLocale {
+ initLanguageCode()
+ let locale = NSLocale(localeIdentifier: languageCode)
+ return locale
+ }
+
+ public static func setCurrentLocale(code: String) {
+ let code = code.lowercased()
+
+ guard languageCode != code else { return }
+ guard availableLocales.contains(code) else { return }
+
+ let appleLanguages = code != "sys" ? [code] : []
+
+ UserDefaults.standard.set(appleLanguages, forKey: "AppleLanguages")
+ UserDefaults.standard.synchronize()
+
+ languageCode = code
+ self.regionCode = Locale.current.regionCode ?? ""
+ languageBundle = languageBundle(withCode: languageCode, andType: "lproj")
+ reinstallLocale(languageCode: languageCode, regionCode: regionCode, posix: Date.is12HourFormat)
+
+ NotificationCenter.default.post(name: .kGTNotificationLanguageChanged, object: nil)
+ }
+
+ // MARK: - Private part
+
+ private static func initLanguageCode() {
+ guard languageCode.isEmpty else { return }
+
+ let languageCodeArray = UserDefaults.standard.object(forKey: "AppleLanguages") as? [String] ?? []
+ var code = languageCodeArray.count == 1 ? languageCodeArray[0] : Locale.preferredLanguages[0]
+
+ code = languageCode(withLocale: code)
+
+ if !availableLocales.contains(code) {
+ code = "en"
+ }
+
+ languageCode = code
+ languageBundle = nil
+ }
+
+ private static func languageCode(withLocale locale: String) -> String {
+ var code = locale
+
+ if let range = code.range(of: "-") {
+ let idx = NSRange(range, in: code).location
+ code = String( code[0.. Bundle? {
+ let path = Bundle.main.path(forResource: code, ofType: type)
+ return Bundle(path: path ?? "")
+ }
+
+ private static func reinstallLocale(languageCode: String, regionCode: String, posix: Bool = false) {
+ var identifier = "\(languageCode.lowercased())_\(regionCode.uppercased())"
+ if posix {
+ identifier += "_POSIX"
+ }
+ locale = Locale(identifier: identifier)
+ }
+
+}
+
+extension String {
+
+ subscript(value: CountableClosedRange) -> Substring {
+ return self[index(at: value.lowerBound)...index(at: value.upperBound)]
+ }
+
+ subscript(value: CountableRange) -> Substring {
+ return self[index(at: value.lowerBound)..) -> Substring {
+ return self[..) -> Substring {
+ return self[...index(at: value.upperBound)]
+ }
+
+ subscript(value: PartialRangeFrom) -> Substring {
+ return self[index(at: value.lowerBound)...]
+ }
+
+ func index(at offset: Int) -> String.Index {
+ return index(startIndex, offsetBy: offset)
+ }
+}
+
+extension Date {
+
+ static public var is12HourFormat: Bool {
+ let locale = Locale.current
+ let formatter = DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: locale)
+
+ return formatter?.contains("a") ?? false
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Localization/LocalizeFuncs.swift b/Examples/SwiftPM/ContainerController/ContainerController/Localization/LocalizeFuncs.swift
new file mode 100644
index 0000000..29e1603
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Localization/LocalizeFuncs.swift
@@ -0,0 +1,23 @@
+//
+// LocalizeFuncs.swift
+// KeyGroupFramework
+//
+// Created by Nikita Bondar on 22/11/2018.
+// Copyright © 2018 KeyGroup. All rights reserved.
+//
+
+public func _L(_ key: String) -> String {
+ return LocalizationManager.localizedString(key)
+}
+
+public func _LF(_ key: String, _ values: String...) -> String {
+ return LocalizationManager.format(key: key, values: values)
+}
+
+public func _LC(_ key: String, _ count: Int) -> String {
+ return _LC(key, Float(count))
+}
+
+public func _LC(_ key: String, _ count: Float) -> String {
+ return LocalizationManager.localizedString(forCount: count, key: key)
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Localization/en.lproj/InfoPlist.strings b/Examples/SwiftPM/ContainerController/ContainerController/Localization/en.lproj/InfoPlist.strings
new file mode 100644
index 0000000..242d491
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Localization/en.lproj/InfoPlist.strings
@@ -0,0 +1,9 @@
+
+
+"NSLocationWhenInUseUsageDescription" = "Your current location will be displayed on the map and used for directions, nearby search results, and estimated travel times.";
+
+"NSLocationAlwaysUsageDescription" = "Your current location will be displayed on the map and used for directions, nearby search results, and estimated travel times.";
+
+"NSLocationAlwaysAndWhenInUseUsageDescription" = "Your current location will be displayed on the map and used for directions, nearby search results, and estimated travel times.";
+
+"NSLocationUsageDescription" = "Your current location will be displayed on the map and used for directions, nearby search results, and estimated travel times.";
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Localization/en.lproj/Localizable.strings b/Examples/SwiftPM/ContainerController/ContainerController/Localization/en.lproj/Localizable.strings
new file mode 100644
index 0000000..93a3697
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Localization/en.lproj/Localizable.strings
@@ -0,0 +1,88 @@
+
+
+"LNG_MAPS_SECTION_SEE_ALL" = "See All";
+"LNG_MAPS_SECTION_CLEAR" = "Clear";
+
+"LNG_MAPS_RECENT_SEARCH" = "Recent Searches";
+"LNG_MAPS_RECENT_CITY" = "Moscow";
+
+"LNG_MAPS_SECTION_FAVORITES" = "Favorites";
+"LNG_MAPS_SECTION_COLLECTIONS" = "Collections";
+"LNG_MAPS_SECTION_RECENTLY_VIEWED" = "Recently Viewed";
+
+"LNG_MAPS_NEARBY_SEARCH" = "Search Nearby";
+"LNG_MAPS_NEARBY_RESTAURANTS" = "Restaurants";
+"LNG_MAPS_NEARBY_FOOD_DELIVERY" = "Food Delivery";
+"LNG_MAPS_NEARBY_GROCERIES" = "Groceries";
+"LNG_MAPS_NEARBY_GAS_STATION" = "Gas Station";
+"LNG_MAPS_NEARBY_PHARMACIES" = "Pharmacies";
+"LNG_MAPS_NEARBY_HOSPITALS" = "Hospitals";
+"LNG_MAPS_NEARBY_URGENT_CARE" = "Urgent Care";
+"LNG_MAPS_NEARBY_SUBWAY" = "Subway";
+"LNG_MAPS_NEARBY_TRAIN_STATION" = "Train Station";
+"LNG_MAPS_NEARBY_SHOPPING_CENTERS" = "Shopping Centers";
+
+"LNG_MAPS_NEW_COLLECTION" = "New Collection...";
+"LNG_MAPS_SEARCH_PLACE_ADDRESS" = "Search for a place or address";
+
+"LNG_MAPS_MARKED_LOCATION" = "Marked Location";
+"LNG_MAPS_DIRECTIONS_MY_LOCATION" = "Directions from My Location";
+
+"LNG_MAPS_KM" = "km";
+"LNG_MAPS_TO" = "to";
+"LNG_MAPS_MIN" = "min";
+
+"LNG_MAPS_COUNTRY" = "Country";
+"LNG_MAPS_ADDRESS" = "Address";
+"LNG_MAPS_STREET" = "Street";
+"LNG_MAPS_CITY" = "City";
+"LNG_MAPS_HOME" = "Home";
+"LNG_MAPS_ADD" = "Add";
+"LNG_MAPS_SCORE" = "Score";
+"LNG_MAPS_WORK" = "Work";
+"LNG_MAPS_REMOVE" = "Remove";
+"LNG_MAPS_SHARE" = "Share";
+
+
+"LNG_MAPS_LOCATION_DIRECTIONS" = "Directions";
+"LNG_MAPS_LOCATION_EDIT" = "Edit Location";
+
+"LNG_MAPS_LOCATION_LATITUDE" = "Latitude";
+"LNG_MAPS_LOCATION_LONGITUDE" = "Longitude";
+
+"LNG_MAPS_LOCATION_ADD_TO_FAVORITES" = "Add to Favorites";
+"LNG_MAPS_LOCATION_CREATE_NEW_CONTACT" = "Create New Contact";
+"LNG_MAPS_LOCATION_ADD_TO_EXISTING_CONTACT" = "Add to Existing Contact";
+"LNG_MAPS_LOCATION_ADD_A_MISSING_PLACE" = "Add a Missing Place";
+
+
+
+"LNG_MAPS_HR" = "hr";
+"LNG_MAPS_WHERE" = "To";
+"LNG_MAPS_FROM" = "From";
+"LNG_MAPS_MY_LOCATION" = "My Location";
+
+"LNG_MAPS_GO" = "GO";
+"LNG_MAPS_SECTION_DRIVING_OPTIONS" = "Driving Options";
+"LNG_MAPS_SECTION_REPORT_AN_ISSUE" = "Report an Issue";
+
+"LNG_MAPS_DRIVE" = "Drive";
+"LNG_MAPS_WALK" = "Walk";
+"LNG_MAPS_TRANSIT" = "Transit";
+"LNG_MAPS_RIDE" = "Ride";
+
+"LNG_MAPS_LOADING" = "Loading...";
+
+"LNG_MAPS_MENU_MAPS_SETTINGS" = "Maps Settings";
+"LNG_MAPS_MENU_MAP" = "Map";
+"LNG_MAPS_MENU_SATELLITE" = "Satellite";
+"LNG_MAPS_MENU_TRAFFIC" = "Traffic";
+"LNG_MAPS_SECTION_MARK_MY_LOCATION" = "Mark My Location";
+
+"LNG_ROUTE_FASTEST" = "Fastest route";
+"LNG_ROUTE_SIMPLEST" = "Simplest route";
+
+"LNG_ROUTE_UNKNOWN" = "unknown";
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Localization/ru.lproj/InfoPlist.strings b/Examples/SwiftPM/ContainerController/ContainerController/Localization/ru.lproj/InfoPlist.strings
new file mode 100644
index 0000000..f43019f
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Localization/ru.lproj/InfoPlist.strings
@@ -0,0 +1,10 @@
+
+"NSLocationWhenInUseUsageDescription" = "Ваша текущая геопозиция будет отображена на карте и использована для предоставления маршрутов, поиска мест рядом и расчета приблизительного времени в пути.";
+
+"NSLocationAlwaysUsageDescription" = "Ваша текущая геопозиция будет отображена на карте и использована для предоставления маршрутов, поиска мест рядом и расчета приблизительного времени в пути.";
+
+"NSLocationAlwaysAndWhenInUseUsageDescription" = "Ваша текущая геопозиция будет отображена на карте и использована для предоставления маршрутов, поиска мест рядом и расчета приблизительного времени в пути.";
+
+"NSLocationUsageDescription" = "Ваша текущая геопозиция будет отображена на карте и использована для предоставления маршрутов, поиска мест рядом и расчета приблизительного времени в пути.";
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Localization/ru.lproj/Localizable.strings b/Examples/SwiftPM/ContainerController/ContainerController/Localization/ru.lproj/Localizable.strings
new file mode 100644
index 0000000..6a0956d
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Localization/ru.lproj/Localizable.strings
@@ -0,0 +1,87 @@
+
+
+"LNG_MAPS_SECTION_SEE_ALL" = "См. все";
+"LNG_MAPS_SECTION_CLEAR" = "Очистить";
+
+"LNG_MAPS_RECENT_SEARCH" = "Недавние поиски";
+"LNG_MAPS_RECENT_CITY" = "Москва";
+
+"LNG_MAPS_SECTION_FAVORITES" = "Избранное";
+"LNG_MAPS_SECTION_COLLECTIONS" = "Коллекции";
+"LNG_MAPS_SECTION_RECENTLY_VIEWED" = "Недавно просмотренные";
+
+"LNG_MAPS_NEARBY_SEARCH" = "Поиск рядом";
+"LNG_MAPS_NEARBY_RESTAURANTS" = "Рестораны";
+"LNG_MAPS_NEARBY_FOOD_DELIVERY" = "Доставка еды";
+"LNG_MAPS_NEARBY_GROCERIES" = "Продукты";
+"LNG_MAPS_NEARBY_GAS_STATION" = "АЗС";
+"LNG_MAPS_NEARBY_PHARMACIES" = "Аптека";
+"LNG_MAPS_NEARBY_HOSPITALS" = "Больницы";
+"LNG_MAPS_NEARBY_URGENT_CARE" = "Пункт скорой помощи";
+"LNG_MAPS_NEARBY_SUBWAY" = "Метро";
+"LNG_MAPS_NEARBY_TRAIN_STATION" = "Ж/д станции";
+"LNG_MAPS_NEARBY_SHOPPING_CENTERS" = "Торговые центры";
+
+"LNG_MAPS_NEW_COLLECTION" = "Новая коллекция...";
+"LNG_MAPS_SEARCH_PLACE_ADDRESS" = "Поиск места или адреса";
+
+"LNG_MAPS_MARKED_LOCATION" = "Отмеченная геопозиция";
+"LNG_MAPS_DIRECTIONS_MY_LOCATION" = "Маршруты из моей геопозиции";
+
+"LNG_MAPS_KM" = "км";
+"LNG_MAPS_TO" = "в";
+"LNG_MAPS_MIN" = "мин";
+
+"LNG_MAPS_COUNTRY" = "Страна";
+"LNG_MAPS_ADDRESS" = "Адрес";
+"LNG_MAPS_STREET" = "Улица";
+"LNG_MAPS_CITY" = "Город";
+"LNG_MAPS_HOME" = "Дом";
+"LNG_MAPS_ADD" = "Добавить";
+"LNG_MAPS_SCORE" = "Магазин";
+"LNG_MAPS_WORK" = "Работа";
+"LNG_MAPS_REMOVE" = "Удалить";
+"LNG_MAPS_SHARE" = "Поделиться";
+
+
+"LNG_MAPS_LOCATION_DIRECTIONS" = "Маршруты";
+"LNG_MAPS_LOCATION_EDIT" = "Изменить геопозицию";
+
+"LNG_MAPS_LOCATION_LATITUDE" = "Широта";
+"LNG_MAPS_LOCATION_LONGITUDE" = "Долгота";
+
+"LNG_MAPS_LOCATION_ADD_TO_FAVORITES" = "Добавить в Избранное";
+"LNG_MAPS_LOCATION_CREATE_NEW_CONTACT" = "Создать контакт";
+"LNG_MAPS_LOCATION_ADD_TO_EXISTING_CONTACT" = "Добавить к контакту";
+"LNG_MAPS_LOCATION_ADD_A_MISSING_PLACE" = "Добавить отсутствующее место";
+
+
+
+"LNG_MAPS_HR" = "ч";
+"LNG_MAPS_WHERE" = "Куда:";
+"LNG_MAPS_FROM" = "Откуда:";
+"LNG_MAPS_MY_LOCATION" = "Моя геолокация";
+
+"LNG_MAPS_GO" = "Начать";
+"LNG_MAPS_SECTION_DRIVING_OPTIONS" = "Параметры для автомаршрута";
+"LNG_MAPS_SECTION_REPORT_AN_ISSUE" = "Сообщить о проблеме";
+
+"LNG_MAPS_DRIVE" = "Автомобиль";
+"LNG_MAPS_WALK" = "Пешком";
+"LNG_MAPS_TRANSIT" = "Транспорт";
+"LNG_MAPS_RIDE" = "Поездка";
+
+"LNG_MAPS_LOADING" = "Загрузка...";
+
+"LNG_MAPS_MENU_MAPS_SETTINGS" = "Настройки Карт";
+"LNG_MAPS_MENU_MAP" = "Карта";
+"LNG_MAPS_MENU_SATELLITE" = "Спутник";
+"LNG_MAPS_MENU_TRAFFIC" = "Пробки";
+"LNG_MAPS_SECTION_MARK_MY_LOCATION" = "Отметить мою геопозицию";
+
+"LNG_ROUTE_FASTEST" = "Самый быстрый";
+"LNG_ROUTE_SIMPLEST" = "Самый простой маршрут";
+
+"LNG_ROUTE_UNKNOWN" = "неизвестно";
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerController.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerController.swift
new file mode 100644
index 0000000..dbb65c4
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerController.swift
@@ -0,0 +1,141 @@
+//
+// LocationContainerController.swift
+// PatternsSwift
+//
+// Created by mrustaa on 04/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+class LocationContainerController: ContainerController, ContainerControllerDelegate {
+
+ // MARK: - Properties
+
+ var locationDelegate: LocationContainerControllerDelegate?
+
+ var tableView: TableAdapterView!
+ var items: [TableAdapterItem] = []
+
+ var darkStyle: Bool = false
+
+ var header: HeaderDetailsView!
+
+ // MARK: - Init
+
+ public init(addTo controller: UIViewController, darkStyle: Bool) {
+ super.init(addTo: controller,
+ layout: MapsMainContainerLayout())
+
+ self.darkStyle = darkStyle
+
+ self.delegate = self
+
+ loadItems()
+ updateTableView()
+ updateContainerView()
+ updateHeaderView()
+
+ add(scrollView: tableView)
+ add(headerView: header)
+ }
+
+ // MARK: - Delegate
+
+ func containerControllerMove(_ controller: ContainerController, position: CGFloat, type: ContainerMoveType, animation: Bool) {
+ locationDelegate?.locationContainerController(move: self, position: position, type: type, animation: animation)
+ }
+
+ //MARK: - Update Container-View
+
+ func updateContainerView() {
+
+ view.addBlur(darkStyle: darkStyle)
+ view.cornerRadius = 12
+ view.addShadow()
+ }
+
+ //MARK: - Update Container-View
+
+ func updateHeaderView() {
+
+ header = HeaderDetailsView()
+ header.height = 60
+ header.titleLabel.text = _L("LNG_MAPS_MARKED_LOCATION")
+ header.subtitle.text = "27 \(_L("LNG_MAPS_KM"))"
+ header.add(darkStyle: darkStyle)
+ header.buttonCloseClickCallback = { [weak self] in
+ guard let _self = self else { return }
+
+ _self.remove(completion: { [weak self] in
+ guard let __self = self else { return }
+
+ _self.locationDelegate?.locationContainerController(closeComplection: __self)
+ })
+ _self.locationDelegate?.locationContainerController(close: _self)
+ }
+ }
+
+ //MARK: - Update DarkStyle
+
+ func update(darkStyle: Bool) {
+
+ self.darkStyle = darkStyle
+ view.addBlur(darkStyle: darkStyle)
+ header.add(darkStyle: darkStyle)
+
+ loadItems()
+ tableView.indicatorStyle = darkStyle ? .white : .default
+ tableView.set(items: items, animated: true)
+ }
+
+ //MARK: - Update TableView
+
+ func updateTableView() {
+
+ tableView = TableAdapterView(frame: CGRect(x: 0, y: 0, width: ContainerDevice.width, height: 0), style: .plain)
+ tableView.indicatorStyle = darkStyle ? .white : .default
+ tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: ContainerDevice.width, height: 18))
+ tableView.set(items: items, animated: true)
+
+ tableView.didScrollCallback = { [weak self] in
+ guard let _self = self else { return }
+
+ _self.header.separatorView?.alpha = (_self.tableView.contentOffset.y <= 0) ? 0.0 : 1.0
+ }
+ tableView.separatorColor = Colors.rgba(128, 128, 128, 0.6)
+ }
+
+ func loadItems() {
+
+ items = []
+
+
+
+ items.append( LocationButtonCellItem(title: _L("LNG_MAPS_LOCATION_DIRECTIONS"),
+ subtitle: "25 \(_L("LNG_MAPS_MIN")) drive",
+ type: .blue, clickCallback: { [weak self] in
+ guard let _self = self else { return }
+
+ _self.presentRoute()
+ }) )
+ items.append( LocationButtonCellItem(title: _L("LNG_MAPS_LOCATION_EDIT"), type: .gray) )
+
+ items.append( LocationAddressCellItem(darkStyle: darkStyle) )
+ items.append( LocationCollectionsButtonCellItem() )
+ items.append( LocationCoordinateCellItem(darkStyle: darkStyle) )
+
+ items.append( LocationTextCellItem(title: _L("LNG_MAPS_LOCATION_ADD_TO_FAVORITES"), image: UIImage(systemName: "star.fill")) )
+ items.append( LocationTextCellItem(title: _L("LNG_MAPS_LOCATION_CREATE_NEW_CONTACT"), image: UIImage(systemName: "person.crop.circle")) )
+ items.append( LocationTextCellItem(title: _L("LNG_MAPS_LOCATION_ADD_TO_EXISTING_CONTACT"), image: UIImage(systemName: "person.crop.circle.badge.plus")) )
+ items.append( LocationTextCellItem(title: _L("LNG_MAPS_LOCATION_ADD_A_MISSING_PLACE"), image: UIImage(systemName: "plus")) )
+
+ }
+
+ //MARK: - Show Route
+
+ func presentRoute() {
+ locationDelegate?.locationContainerController(showRoute: self)
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerControllerDelegate.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerControllerDelegate.swift
new file mode 100644
index 0000000..a9b9d54
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerControllerDelegate.swift
@@ -0,0 +1,21 @@
+//
+// LocationContainerControllerDelegate.swift
+// PatternsSwift
+//
+// Created by mrustaa on 26/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+protocol LocationContainerControllerDelegate {
+
+ func locationContainerController(showRoute locationContainerController: LocationContainerController)
+
+ func locationContainerController(close locationContainerController: LocationContainerController)
+
+ func locationContainerController(closeComplection locationContainerController: LocationContainerController)
+
+ func locationContainerController(move locationContainerController: LocationContainerController, position: CGFloat, type: ContainerMoveType, animation: Bool)
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Maps/MapsContainerController.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Maps/MapsContainerController.swift
new file mode 100644
index 0000000..9abbd2d
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Maps/MapsContainerController.swift
@@ -0,0 +1,202 @@
+//
+// MapsContainerController.swift
+// PatternsSwift
+//
+// Created by mrustaa on 04/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+class MapsContainerController: ContainerController, ContainerControllerDelegate {
+
+ // MARK: - Properties
+
+ var mapsDelegate: MapsContainerControllerDelegate?
+ var tableView: TableAdapterView!
+ var items: [TableAdapterItem] = []
+ var darkStyle: Bool = false
+ var searchSelected: Bool = false
+ var headerSearchBarView: HeaderSearchBarView!
+
+ // MARK: - Init
+
+ public init(addTo controller: UIViewController, darkStyle: Bool) {
+ super.init(addTo: controller,
+ layout: MapsMainContainerLayout())
+
+ self.darkStyle = darkStyle
+ self.delegate = self
+
+ loadItems()
+ updateTableView()
+ updateContainerView()
+ updateHeaderView()
+
+ add(scrollView: tableView)
+ add(headerView: headerSearchBarView)
+
+ }
+
+ // MARK: - Delegate
+
+ func containerControllerMove(_ controller: ContainerController, position: CGFloat, type: ContainerMoveType, animation: Bool) {
+
+ mapsDelegate?.mapsContainerController(move: self, position: position, type: type, animation: animation)
+
+ if animation, type != .top {
+ headerSearchBarView.searchBar.setShowsCancelButton(false, animated: true)
+ updateTableView(searchSelected: false)
+ }
+ }
+
+ //MARK: - Update Container-View
+
+ func updateContainerView() {
+
+ view.addBlur(darkStyle: darkStyle)
+ view.cornerRadius = 12
+ view.addShadow()
+ }
+
+ //MARK: - Update Container-View
+
+ func updateHeaderView() {
+
+ headerSearchBarView = HeaderSearchBarView()
+ headerSearchBarView.searchBarBeginEditingCallback = { [weak self] in
+ guard let _self = self else { return }
+
+ _self.updateTableView(searchSelected: true)
+ _self.move(type: .top)
+ }
+ headerSearchBarView.searchBarCancelButtonClickedCallback = { [weak self] in
+ guard let _self = self else { return }
+
+ _self.controller?.view.endEditing(true)
+ _self.updateTableView(searchSelected: false)
+ _self.move(type: .middle)
+ }
+ }
+
+ //MARK: - Update DarkStyle
+
+ func update(darkStyle: Bool) {
+
+ self.darkStyle = darkStyle
+
+ headerSearchBarView.set(darkStyle: darkStyle)
+
+ view.addBlur(darkStyle: darkStyle)
+
+
+ loadItems()
+ tableView.indicatorStyle = darkStyle ? .white : .default
+ tableView.set(items: items, animated: true)
+ }
+
+ func updateTableView(searchSelected: Bool) {
+ if self.searchSelected == searchSelected { return }
+
+ self.searchSelected = searchSelected
+
+ loadItems()
+ tableView.indicatorStyle = darkStyle ? .white : .default
+ tableView.set(items: items, animated: true)
+ }
+
+ //MARK: - Update TableView
+
+ func updateTableView() {
+
+ tableView = TableAdapterView()
+ tableView.indicatorStyle = darkStyle ? .white : .default
+ tableView.set(items: items, animated: true)
+ tableView.selectIndexCallback = { [weak self] (index: Int) -> Void in
+ guard let _self = self, _self.items[index] is MapsLocationCellItem else { return }
+
+ _self.showLocationDetails()
+ }
+ tableView.didScrollCallback = { [weak self] in
+ guard let _self = self else { return }
+
+ _self.controller?.view.endEditing(true)
+// let state = _self.tableView.panGestureRecognizer.state
+// print("\(state)")
+//
+// switch _self.tableView.panGestureRecognizer.state {
+// case .began:
+// default: break
+// }
+
+ _self.headerSearchBarView.separatorView?.alpha = (_self.tableView.contentOffset.y <= 0) ? 0.0 : 1.0
+ }
+ tableView.separatorColor = Colors.rgba(128, 128, 128, 0.6)
+ }
+
+ func loadItems() {
+
+ items = []
+
+ if searchSelected {
+
+ let orange: UIColor = Colors.rgb(248, 149, 64)
+ let yellow: UIColor = Colors.rgb(255, 179, 0)
+ let blue: UIColor = Colors.rgb(29, 160, 255)
+ let red: UIColor = Colors.rgb(255, 93, 90)
+
+
+ items.append( MapsSectionCellItem(title: _L("LNG_MAPS_RECENT_SEARCH"), textButton: _L("LNG_MAPS_SECTION_SEE_ALL")) )
+
+ items.append( MapsSearchCellItem(darkStyle: darkStyle, title: _L("LNG_MAPS_RECENT_CITY"), color: .clear, separator: false) )
+
+ items.append( MapsSectionCellItem(title: _L("LNG_MAPS_NEARBY_SEARCH"), textButton: "") )
+
+ items.append( MapsSearchCellItem(darkStyle: darkStyle, title: _L("LNG_MAPS_NEARBY_RESTAURANTS"), color: orange) )
+ items.append( MapsSearchCellItem(darkStyle: darkStyle, title: _L("LNG_MAPS_NEARBY_FOOD_DELIVERY"), color: orange) )
+ items.append( MapsSearchCellItem(darkStyle: darkStyle, title: _L("LNG_MAPS_NEARBY_GROCERIES"), color: yellow) )
+ items.append( MapsSearchCellItem(darkStyle: darkStyle, title: _L("LNG_MAPS_NEARBY_GAS_STATION"), color: blue) )
+ items.append( MapsSearchCellItem(darkStyle: darkStyle, title: _L("LNG_MAPS_NEARBY_PHARMACIES"), color: red) )
+ items.append( MapsSearchCellItem(darkStyle: darkStyle, title: _L("LNG_MAPS_NEARBY_HOSPITALS"), color: red) )
+ items.append( MapsSearchCellItem(darkStyle: darkStyle, title: _L("LNG_MAPS_NEARBY_URGENT_CARE"), color: red) )
+ items.append( MapsSearchCellItem(darkStyle: darkStyle, title: _L("LNG_MAPS_NEARBY_SUBWAY"), color: blue) )
+ items.append( MapsSearchCellItem(darkStyle: darkStyle, title: _L("LNG_MAPS_NEARBY_TRAIN_STATION"), color: blue) )
+ items.append( MapsSearchCellItem(darkStyle: darkStyle, title: _L("LNG_MAPS_NEARBY_SHOPPING_CENTERS"), color: yellow) )
+
+ } else {
+
+ items.append( MapsSectionCellItem(title: _L("LNG_MAPS_SECTION_FAVORITES")) )
+ items.append( MapsFavoritesCellItem(darkStyle: darkStyle, clickCallback: { [weak self] in
+ guard let _self = self else { return }
+
+ _self.showLocationDetails()
+ }) )
+
+ items.append( MapsSectionCellItem(title: _L("LNG_MAPS_SECTION_COLLECTIONS")) )
+ items.append( MapsCollectionsCellItem() )
+
+ items.append( MapsSectionCellItem(title: _L("LNG_MAPS_SECTION_RECENTLY_VIEWED")) )
+
+ for index in 1...7 {
+ let title = String(format: "%@ %d", _L("LNG_MAPS_MARKED_LOCATION"), index)
+ let subtitle = String(format: "%@, %d/2, %@", _L("LNG_MAPS_STREET"), index, _L("LNG_MAPS_CITY"))
+ items.append( MapsLocationCellItem(title: title, subtitle: subtitle, colorType: .red, darkStyle: darkStyle) )
+ }
+ for index in 8...11 {
+ let title = String(format: "%@ %d", _L("LNG_MAPS_MARKED_LOCATION"), index)
+ let subtitle = _L("LNG_MAPS_DIRECTIONS_MY_LOCATION")
+ items.append( MapsLocationCellItem(title: title, subtitle: subtitle, colorType: .black, darkStyle: darkStyle) )
+ }
+
+ }
+ }
+
+ //MARK: - Show Location-Details
+
+ func showLocationDetails() {
+
+ mapsDelegate?.mapsContainerController(showLocationDetails: self)
+
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Maps/MapsContainerControllerDelegate.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Maps/MapsContainerControllerDelegate.swift
new file mode 100644
index 0000000..e450d5f
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Maps/MapsContainerControllerDelegate.swift
@@ -0,0 +1,18 @@
+//
+// MapsContainerControllerDelegate.swift
+// PatternsSwift
+//
+// Created by mrustaa on 25/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+protocol MapsContainerControllerDelegate {
+
+ func mapsContainerController(showLocationDetails mapsContainerController: MapsContainerController)
+
+ func mapsContainerController(move mapsContainerController: MapsContainerController, position: CGFloat, type: ContainerMoveType, animation: Bool)
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Menu/MenuContainerController.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Menu/MenuContainerController.swift
new file mode 100644
index 0000000..a350882
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Menu/MenuContainerController.swift
@@ -0,0 +1,99 @@
+//
+// LocationContainerController.swift
+// PatternsSwift
+//
+// Created by mrustaa on 04/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+class MenuContainerController: ContainerController, ContainerControllerDelegate {
+
+ // MARK: - Properties
+ var menuDelegate: MenuContainerControllerDelegate?
+ var tableView: TableAdapterView!
+ var items: [TableAdapterItem] = []
+ var header: MapsMenuHeader!
+ var selectedIndex: Int = 0
+ var darkStyle: Bool = false
+
+ // MARK: - Init
+
+ public init(addTo controller: UIViewController, darkStyle: Bool, selectedIndex: Int) {
+ super.init(addTo: controller,
+ layout: MapsMenuContainerLayout())
+ self.darkStyle = darkStyle
+ self.selectedIndex = selectedIndex
+ self.delegate = self
+ loadItems()
+ updateTableView()
+ updateContainerView()
+ updateHeaderView()
+ add(scrollView: tableView)
+ add(headerView: header)
+ move(type: .top)
+ }
+
+ // MARK: - Delegate
+ func containerControllerShadowClick(_ containerController: ContainerController) {
+ closeContainer()
+ }
+
+ func closeContainer() {
+ remove(completion: { [weak self] in
+ guard let _self = self else { return }
+ _self.menuDelegate?.menuContainerController(closeComplection: _self)
+ })
+ menuDelegate?.menuContainerController(close: self)
+ }
+
+ //MARK: - Update Container-View
+ func updateContainerView() {
+ view.addBlur(darkStyle: darkStyle)
+ view.cornerRadius = 12
+ view.addShadow()
+ }
+
+ //MARK: - Update Container-View
+ func updateHeaderView() {
+ header = MapsMenuHeader()
+ header.set(darkStyle: darkStyle)
+ header.buttonCloseClickCallback = { [weak self] in
+ guard let _self = self else { return }
+ _self.closeContainer()
+ }
+ }
+
+ //MARK: - Update TableView
+ func updateTableView() {
+ tableView = TableAdapterView(frame: CGRect(x: 0, y: 0, width: ContainerDevice.width, height: 0), style: .plain)
+ tableView.set(items: items, animated: true)
+ tableView.separatorColor = Colors.rgba(128, 128, 128, 0.6)
+ }
+
+
+ func loadItems() {
+ items = []
+
+ items.append( MapsMenuSegmentCellItem(selected: selectedIndex, darkStyle: darkStyle, selectIndexCallback: { [weak self] (_ index: Int) in
+ guard let _self = self else { return }
+ _self.selectedIndex = index
+ _self.menuDelegate?.menuContainerController(segment: _self, selectedIndex: index)
+ _self.darkStyle = (index == 2)
+ _self.view.addBlur(darkStyle: _self.darkStyle)
+ _self.header.set(darkStyle: _self.darkStyle)
+ _self.loadItems()
+ _self.tableView.set(items: _self.items, animated: true)
+ }) )
+
+ items.append( MapsMenuTextCellItem(title: _L("LNG_MAPS_MENU_TRAFFIC"), switchShow: true, darkStyle: darkStyle, separator: false) )
+ items.append( MapsMenuSpaceCellItem() )
+ items.append( MapsMenuTextCellItem(title: _L("LNG_MAPS_SECTION_MARK_MY_LOCATION")) )
+ items.append( MapsMenuTextCellItem(title: _L("LNG_MAPS_LOCATION_ADD_A_MISSING_PLACE")) )
+ items.append( MapsMenuTextCellItem(title: _L("LNG_MAPS_SECTION_REPORT_AN_ISSUE"), separator: false) )
+ items.append( MapsMenuSpaceCellItem() )
+ // items.append( MapsMenuSpaceCellItem(cellHeight: 100) )
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Menu/MenuContainerControllerDelegate.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Menu/MenuContainerControllerDelegate.swift
new file mode 100644
index 0000000..e1e024d
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Menu/MenuContainerControllerDelegate.swift
@@ -0,0 +1,19 @@
+//
+// MenuContainerControllerDelegate.swift
+// PatternsSwift
+//
+// Created by mrustaa on 26/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+protocol MenuContainerControllerDelegate {
+
+ func menuContainerController(close menuContainerController: MenuContainerController)
+
+ func menuContainerController(closeComplection menuContainerController: MenuContainerController)
+
+ func menuContainerController(segment menuContainerController: MenuContainerController, selectedIndex: Int)
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Route/RouteContainerController.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Route/RouteContainerController.swift
new file mode 100644
index 0000000..e4a0fb8
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Route/RouteContainerController.swift
@@ -0,0 +1,181 @@
+//
+// LocationContainerController.swift
+// PatternsSwift
+//
+// Created by mrustaa on 04/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+open class RouteContainerController: ContainerController, ContainerControllerDelegate {
+
+ // MARK: - Properties
+
+ var routeDelegate: RouteContainerControllerDelegate?
+
+ var tableView: TableAdapterView!
+ var items: [TableAdapterItem] = []
+
+ var darkStyle: Bool = false
+
+ var tabbar: HeaderTabBarView!
+ var header: HeaderDetailsView!
+ var tableHeader: TableHeaderSpinerView?
+ var routeLayout: MapsRouteContainerLayout
+
+ // MARK: - Init
+
+ public init(addTo controller: UIViewController, darkStyle: Bool) {
+
+ routeLayout = MapsRouteContainerLayout()
+
+ super.init(addTo: controller,
+ layout: routeLayout)
+
+ self.darkStyle = darkStyle
+
+ self.delegate = self
+
+ loadTableItems()
+ loadTableView()
+
+ loadContainerView()
+ loadHeaderView()
+ loadTabBarBottom()
+
+ add(scrollView: tableView)
+ add(headerView: header)
+ add(footerView: tabbar)
+ }
+
+ // MARK: - Delegate
+
+ public func containerControllerMove(_ controller: ContainerController, position: CGFloat, type: ContainerMoveType, animation: Bool) {
+ routeDelegate?.routeContainerController(move: self, position: position, type: type, animation: animation)
+
+ if let tableHeader = tableHeader {
+
+ if animation {
+ UIView.animate(withDuration: 0.55, animations: { [weak self] in
+ guard let _self = self else { return }
+
+ switch type {
+ case .top: tableHeader.height = (ContainerDevice.height - (_self.layout.positions.top + _self.header.height + _self.tabbar.height))
+ case .middle: tableHeader.height = MapsRouteCellData.height()
+ case .bottom: tableHeader.height = 0.0
+ default: break
+ }
+ })
+
+ } else {
+ tableHeader.height = tableView.height
+ }
+ }
+ }
+
+ //MARK: - Update Container-View
+
+ func loadContainerView() {
+
+ view.addBlur(darkStyle: darkStyle)
+ view.cornerRadius = 12
+ view.addShadow()
+ }
+
+ //MARK: - Update Container-View
+
+ func loadTabBarBottom() {
+
+ tabbar = HeaderTabBarView()
+ tabbar.height = (49.0 + ContainerDevice.isIphoneXBottom)
+ tabbar.addBlur(darkStyle: darkStyle)
+
+ }
+
+ func loadHeaderView() {
+
+ header = HeaderDetailsView()
+ header.height = 78
+ header.separatorView?.alpha = 1.0
+ header.titleLabel.text = "\(_L("LNG_MAPS_WHERE")) \(_L("LNG_MAPS_MARKED_LOCATION"))"
+ header.subtitle.text = _L("LNG_MAPS_FROM")
+ header.textButton.setTitle(_L("LNG_MAPS_MY_LOCATION"), for: .normal)
+ header.add(darkStyle: darkStyle)
+ header.buttonCloseClickCallback = { [weak self] in
+ guard let _self = self else { return }
+
+ if let tab = _self.tabbar {
+ tab.removeFromSuperview()
+ }
+ _self.remove(completion: { [weak self] in
+ guard let __self = self else { return }
+ _self.routeDelegate?.routeContainerController(closeComplection: __self)
+ })
+ _self.routeDelegate?.routeContainerController(close: _self)
+ }
+ }
+
+ //MARK: - Update DarkStyle
+
+ func update(darkStyle: Bool) {
+
+ self.darkStyle = darkStyle
+ view.addBlur(darkStyle: darkStyle)
+ header.add(darkStyle: darkStyle)
+ tabbar?.addBlur(darkStyle: darkStyle)
+
+ loadTableItems()
+ tableView.indicatorStyle = darkStyle ? .white : .default
+ tableView.set(items: items, animated: true)
+ }
+
+
+ //MARK: - Update TableView
+
+ func loadTableView() {
+
+ tableView = TableAdapterView(frame: CGRect(x: 0, y: 0, width: ContainerDevice.width, height: 0), style: .plain)
+ tableView.indicatorStyle = darkStyle ? .white : .default
+ tableView.separatorColor = Colors.rgba(128, 128, 128, 0.6)
+
+ tableHeader = TableHeaderSpinerView()
+ tableHeader?.width = ContainerDevice.width
+ tableHeader?.backgroundColor = .clear
+ tableView.tableHeaderView = tableHeader
+
+ main(delay: 2.5) { [weak self] in
+ guard let _self = self else { return }
+
+ _self.tableView.tableHeaderView = nil
+ _self.tableHeader?.removeFromSuperview()
+ _self.tableHeader = nil
+
+ _self.routeLayout.footerPadding = MapsRouteCellData.height()
+
+ _self.tableView.set(items: _self.items, animated: true)
+ }
+ }
+
+ public func main(delay: Double, work: @escaping () -> Void) {
+ let deadline = DispatchTime.now() + delay
+ DispatchQueue.main.asyncAfter(deadline: deadline) {
+ work()
+ }
+ }
+
+ func loadTableItems() {
+
+ items = []
+
+ items.append( MapsRouteCellItem(darkStyle: darkStyle, title: "15 \(_L("LNG_MAPS_MIN"))", subtitle: "24 \(_L("LNG_MAPS_KM")) · \(_L("LNG_MAPS_STREET")) 1234541\n\(_L("LNG_ROUTE_FASTEST"))", selected: true) )
+ items.append( MapsRouteCellItem(darkStyle: darkStyle, title: "40 \(_L("LNG_MAPS_MIN"))", subtitle: "31 \(_L("LNG_MAPS_KM")) · \(_L("LNG_MAPS_STREET")) \(_L("LNG_ROUTE_UNKNOWN"))...\n№ 7029") )
+ items.append( MapsRouteCellItem(darkStyle: darkStyle, title: "45 \(_L("LNG_MAPS_MIN"))", subtitle: "29 \(_L("LNG_MAPS_KM")) · \(_L("LNG_MAPS_STREET")) \(_L("LNG_ROUTE_UNKNOWN"))\n\(_L("LNG_ROUTE_SIMPLEST"))") )
+ items.append( MapsRouteCellItem(darkStyle: darkStyle, title: "45 \(_L("LNG_MAPS_MIN"))", subtitle: "29 \(_L("LNG_MAPS_KM")) · \(_L("LNG_MAPS_STREET")) \(_L("LNG_ROUTE_UNKNOWN"))\n\(_L("LNG_ROUTE_SIMPLEST"))") )
+
+ items.append( MapsSectionCellItem(title: _L("LNG_MAPS_SECTION_DRIVING_OPTIONS"), textButton: "") )
+ items.append( MapsSectionCellItem(title: _L("LNG_MAPS_SECTION_REPORT_AN_ISSUE"), textButton: "") )
+ }
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Route/RouteContainerControllerDelegate.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Route/RouteContainerControllerDelegate.swift
new file mode 100644
index 0000000..7d7e0e6
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Route/RouteContainerControllerDelegate.swift
@@ -0,0 +1,19 @@
+//
+// RouteContainerControllerDelegate.swift
+// PatternsSwift
+//
+// Created by mrustaa on 26/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+public protocol RouteContainerControllerDelegate {
+
+ func routeContainerController(close routeContainerController: RouteContainerController)
+
+ func routeContainerController(closeComplection routeContainerController: RouteContainerController)
+
+ func routeContainerController(move routeContainerController: RouteContainerController, position: CGFloat, type: ContainerMoveType, animation: Bool)
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsContainerLayout.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsContainerLayout.swift
new file mode 100644
index 0000000..ca59da2
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsContainerLayout.swift
@@ -0,0 +1,69 @@
+//
+// MapsContainerLayout.swift
+// PatternsSwift
+//
+// Created by mrustaa on 22/05/2020.
+// Copyright © 2020 mrusta. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+class MapsContainerLayout: ContainerLayout {
+
+ override init() {
+ super.init()
+
+ startPosition = .hide
+
+ setBackgroundShadow()
+
+ setIPadInsets()
+
+ setLandscapePositions()
+ setLandscapeInsets()
+ }
+
+ private func setBackgroundShadow() {
+
+ backgroundShadowShow = ContainerDevice.isIpad ? false : true
+ landscapeBackgroundShadowShow = false
+ }
+
+ private func setIPadInsets() {
+
+ if ContainerDevice.isIpad {
+
+ let width: CGFloat = 500
+
+ let left: CGFloat = 50
+ let right: CGFloat = (ContainerDevice.screenMin - width)
+
+ insets = ContainerInsets(right: right, left: left)
+ }
+ }
+
+ private func setLandscapePositions() {
+
+ var top: CGFloat = 8
+ if ContainerDevice.isIphoneX { top += 16 }
+ else if ContainerDevice.isIpad { top += ContainerDevice.statusBarHeight }
+
+ var bottom: CGFloat = 70
+ if ContainerDevice.isIphoneX { bottom += ContainerDevice.isIphoneXTop }
+
+ landscapePositions = ContainerPosition(top: top, bottom: bottom)
+ }
+
+ private func setLandscapeInsets() {
+
+ let width: CGFloat = ContainerDevice.isIphoneX ? 320 : 500
+
+ let left: CGFloat = (ContainerDevice.isIphoneX ? 44 : 50)
+ let right: CGFloat = (ContainerDevice.screenMax - width)
+
+ landscapeInsets = ContainerInsets(right: right, left: left)
+ }
+
+}
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsMainContainerLayout.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsMainContainerLayout.swift
new file mode 100644
index 0000000..d7c37f5
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsMainContainerLayout.swift
@@ -0,0 +1,29 @@
+//
+// MapsMainContainerLayout.swift
+// PatternsSwift
+//
+// Created by mrustaa on 23/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+class MapsMainContainerLayout: MapsContainerLayout {
+
+ override init() {
+ super.init()
+
+ var top: CGFloat = 44
+ if ContainerDevice.isIphoneX { top += 12 }
+
+ var bottom: CGFloat = 70
+ if ContainerDevice.isIphoneX { bottom += ContainerDevice.isIphoneXBottom }
+
+ var middle: CGFloat = 262
+ if ContainerDevice.isIphoneX { middle = 325 }
+ else if ContainerDevice.isIphone5 { middle = 192 }
+
+ positions = ContainerPosition(top: top, middle: middle, bottom: bottom)
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsMenuContainerLayout.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsMenuContainerLayout.swift
new file mode 100644
index 0000000..70a593c
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsMenuContainerLayout.swift
@@ -0,0 +1,36 @@
+//
+// MapsMenuContainerLayout.swift
+// PatternsSwift
+//
+// Created by mrustaa on 23/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+class MapsMenuContainerLayout: ContainerLayout {
+
+ override init() {
+ super.init()
+
+ var paddingBottom: CGFloat = 410
+ if ContainerDevice.isIphoneX {
+ paddingBottom += 56
+ }
+
+ var top: CGFloat = 0
+ if ContainerDevice.isPortrait, !ContainerDevice.isIpad {
+ top = (ContainerDevice.height - paddingBottom)
+ }
+
+ movingEnabled = false
+
+ positions = ContainerPosition(top: top, bottom: 0.0)
+
+ backgroundShadowShow = true
+
+ landscapeBackgroundShadowShow = true
+
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsRouteContainerLayout.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsRouteContainerLayout.swift
new file mode 100644
index 0000000..7cab8f7
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsRouteContainerLayout.swift
@@ -0,0 +1,29 @@
+//
+// MapsRouteContainerLayout.swift
+// PatternsSwift
+//
+// Created by mrustaa on 23/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+class MapsRouteContainerLayout: MapsContainerLayout {
+
+ override init() {
+ super.init()
+
+ var top: CGFloat = 44
+ if ContainerDevice.isIphoneX { top += 12 }
+
+ var bottom: CGFloat = 77
+ if ContainerDevice.isIphoneX { bottom += ContainerDevice.isIphoneXBottom }
+
+ let tabbarHeight: CGFloat = 49.0 + ContainerDevice.isIphoneXBottom
+ let headerHeight: CGFloat = 78.0
+ let middle: CGFloat = (headerHeight + tabbarHeight + MapsRouteCellData.height())
+
+ positions = ContainerPosition(top: top, middle: middle, bottom: bottom)
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/MapManager/MapViewManager.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/MapManager/MapViewManager.swift
new file mode 100644
index 0000000..024e7ab
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/MapManager/MapViewManager.swift
@@ -0,0 +1,261 @@
+//
+// MapViewController.swift
+// PatternsSwift
+//
+// Created by mrustaa on 19/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import MapKit
+import CoreLocation
+import ContainerController
+
+class MapViewManager: NSObject {
+
+ // MARK: Map Properties
+
+ var mapView: MKMapView?
+ var compass: MKCompassButton!
+
+ var locationManager: CLLocationManager?
+
+ var selectAnnotation: MKPointAnnotation?
+ var routeOverlay: MKOverlay?
+ var setMoveMyLocationOnce: Bool = false
+
+ // MARK: - Callbacks
+
+ var changeRegionCallback: (() -> ())?
+ var selectPinCallback: (() -> ())?
+
+ // MARK: - Init
+
+ public init(mapView: MKMapView) {
+ super.init()
+
+ mapView.delegate = self
+ self.mapView = mapView
+
+ loadLocation()
+ updateCompass()
+ }
+
+ // MARK: - Location Manager
+
+ func loadLocation() {
+
+ if CLLocationManager.locationServicesEnabled() {
+ locationManager = CLLocationManager()
+ locationManager?.delegate = self
+ locationManager?.desiredAccuracy = kCLLocationAccuracyBest
+ locationManager?.requestAlwaysAuthorization()
+ locationManager?.startUpdatingLocation()
+ }
+ }
+
+ // MARK: - Map Compass
+
+ func updateCompass() {
+
+ mapView?.showsCompass = false
+
+ compass = MKCompassButton(mapView:mapView)
+ compass.x = (ContainerDevice.width - 47)
+ compass.compassVisibility = .adaptive
+
+ mapView?.addSubview(compass)
+ }
+
+ public func closeRoute(showSelectPin: Bool) {
+
+ if let route = routeOverlay {
+ mapView?.removeOverlay(route)
+ }
+ selectPinAnimation(show: showSelectPin)
+ }
+
+ public func selectPinAnimation(show: Bool) {
+
+ if let selectPin = selectAnnotation {
+ if show {
+ mapView?.selectAnnotation(selectPin, animated: true)
+ } else {
+ mapView?.deselectAnnotation(selectPin, animated: true)
+ }
+ }
+ }
+
+ public func addMapPinFrom(longPress: UILongPressGestureRecognizer) {
+
+ guard let mapView = mapView else { return }
+
+ if let anotationMap = selectAnnotation {
+ mapView.removeAnnotations([anotationMap]);
+ }
+
+ let point: CGPoint = longPress.location(in: mapView)
+ let coordinate: CLLocationCoordinate2D = mapView.convert(point, toCoordinateFrom: mapView)
+
+ let annotation = MKPointAnnotation()
+ annotation.coordinate = coordinate
+ mapView.addAnnotation(annotation)
+
+ selectAnnotation = annotation
+
+ mapView.selectAnnotation(annotation, animated: true)
+ }
+
+
+ // MARK: - Map Show Route
+
+ public func showRouteOnMapMyLocation() {
+ if let pickupCoord = mapView?.userLocation.location?.coordinate,
+ let destinationCoord = selectAnnotation {
+
+ showRouteOnMap(pickupCoordinate: pickupCoord, destinationCoordinate: destinationCoord.coordinate)
+ }
+ }
+
+ public func showRouteOnMap(pickupCoordinate: CLLocationCoordinate2D, destinationCoordinate: CLLocationCoordinate2D) {
+
+ closeRoute(showSelectPin: false)
+
+ let sourcePlacemark = MKPlacemark(coordinate: pickupCoordinate, addressDictionary: nil)
+ let sourceMapItem = MKMapItem(placemark: sourcePlacemark)
+
+ let destinationPlacemark = MKPlacemark(coordinate: destinationCoordinate, addressDictionary: nil)
+ let destinationMapItem = MKMapItem(placemark: destinationPlacemark)
+
+ let directionRequest = MKDirections.Request()
+ directionRequest.source = sourceMapItem
+ directionRequest.destination = destinationMapItem
+ directionRequest.transportType = .automobile
+
+
+ let directions = MKDirections(request: directionRequest)
+
+ directions.calculate { [weak self] (response, error) -> Void in
+ guard let _self = self else { return }
+
+ guard let response = response else { return }
+
+ let route = response.routes[0]
+
+ _self.routeOverlay = route.polyline
+
+ _self.mapView?.addOverlay((route.polyline), level: MKOverlayLevel.aboveRoads)
+
+ let rect: MKMapRect = route.polyline.boundingMapRect
+
+ let coordReg: MKCoordinateRegion = MKCoordinateRegion(rect)
+
+ let mapButtonWidth: CGFloat = 45
+
+ let padding: CGFloat = 35
+ let bottom: CGFloat = ContainerDevice.isPortrait ? (261 + padding) : padding
+ let left: CGFloat = ContainerDevice.isPortrait ? padding : (261 + padding * 2)
+ let right: CGFloat = (mapButtonWidth + 8 + padding)
+
+ let insets = UIEdgeInsets(top: padding, left: left, bottom: bottom, right: right)
+
+ _self.mapView?.setVisibleRegion(mapRegion: coordReg, edgePadding: insets, animated: true)
+
+ }
+ }
+}
+
+// MARK: - Map-Delegate
+
+extension MapViewManager: MKMapViewDelegate {
+
+ func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
+ if !animated {
+ changeRegionCallback?()
+ }
+ }
+
+ func mapView(_ mapView: MKMapView, regionWillChangeAnimated animated: Bool) {
+ if !animated {
+ changeRegionCallback?()
+ }
+ }
+
+ // MARK: - Map Select-Pin
+
+ func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
+
+ let region = MKCoordinateRegion(center: view.annotation!.coordinate, span: mapView.region.span)
+ mapView.setRegion(region, animated: true)
+
+ selectPinCallback?()
+
+ if let route = routeOverlay {
+ mapView.removeOverlay(route)
+ }
+ }
+
+ // MARK: - Map Route-Color
+
+ func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
+
+ let renderer = MKPolylineRenderer(overlay: overlay)
+
+ renderer.strokeColor = Colors.rgb(17, 147, 255)
+ renderer.lineWidth = 8.0
+
+ return renderer
+ }
+
+}
+
+// MARK: - Update Location Delegate
+
+extension MapViewManager: CLLocationManagerDelegate {
+
+ func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
+
+ if setMoveMyLocationOnce { return }
+
+ if let location = locations.last {
+ let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
+
+ let radius: CLLocationDistance = 3200
+ let region = MKCoordinateRegion(center: center, latitudinalMeters: radius, longitudinalMeters: radius)
+
+ mapView?.setRegion(region, animated: false)
+
+ let annotation = MKPointAnnotation()
+ annotation.coordinate = CLLocationCoordinate2D(latitude: location.coordinate.latitude + 0.01, longitude: location.coordinate.longitude + 0.01)
+ mapView?.addAnnotation(annotation)
+ selectAnnotation = annotation
+
+ setMoveMyLocationOnce = true
+ }
+ }
+
+}
+
+// MARK: - Map Extension
+
+extension MKCoordinateRegion {
+ var mapRect: MKMapRect {
+ get {
+ let a = MKMapPoint( CLLocationCoordinate2DMake(
+ self.center.latitude + self.span.latitudeDelta / 2,
+ self.center.longitude - self.span.longitudeDelta / 2))
+
+ let b = MKMapPoint( CLLocationCoordinate2DMake(
+ self.center.latitude - self.span.latitudeDelta / 2,
+ self.center.longitude + self.span.longitudeDelta / 2))
+
+ return MKMapRect(x: min(a.x,b.x), y: min(a.y,b.y), width: abs(a.x-b.x), height: abs(a.y-b.y))
+ }
+ }
+}
+
+extension MKMapView {
+ func setVisibleRegion(mapRegion: MKCoordinateRegion, edgePadding insets: UIEdgeInsets, animated animate: Bool) {
+ self.setVisibleMapRect(mapRegion.mapRect, edgePadding: insets , animated: animate)
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/MapsViewController.storyboard b/Examples/SwiftPM/ContainerController/ContainerController/Maps/MapsViewController.storyboard
new file mode 100644
index 0000000..c9a2219
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/MapsViewController.storyboard
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/MapsViewController.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/MapsViewController.swift
new file mode 100644
index 0000000..d042f19
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/MapsViewController.swift
@@ -0,0 +1,424 @@
+//
+// MapsViewController.swift
+// PatternsSwift
+//
+// Created by mrustaa on 02/05/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+import MapKit
+import CoreLocation
+import ContainerController
+
+class MapsViewController: StoryboardController, MapsContainerControllerDelegate, LocationContainerControllerDelegate, RouteContainerControllerDelegate, MenuContainerControllerDelegate {
+
+ // MARK: - IBOutlets
+ @IBOutlet weak var mapView: MKMapView!
+ @IBOutlet weak var mapWeatherView: MapsWeatherView!
+ @IBOutlet weak var mapButtons: MapsButtons!
+ @IBOutlet weak var mapButtonsPaddingTop: NSLayoutConstraint!
+ @IBOutlet weak var mapButtonsPaddingRight: NSLayoutConstraint!
+ @IBOutlet weak var statusBlur: UIVisualEffectView!
+ @IBOutlet weak var statusBarBlurHeight: NSLayoutConstraint!
+
+ // MARK: - Properties
+ var mapManager: MapViewManager!
+ var mapsContainer: MapsContainerController!
+ var locationContainer: LocationContainerController?
+ var routeContainer: RouteContainerController?
+ var menuContainer: MenuContainerController!
+ var darkStyle: Bool = false
+ var selectedIndex: Int = 0
+ var showOnce: Bool = false
+
+ // MARK: - Life Cycle
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ NotificationCenter.default.addObserver(self, selector: #selector(rotated), name: UIDevice.orientationDidChangeNotification, object: nil)
+ updateMapManager()
+ showMapsContainer()
+ updateMapViewButtons()
+ updateMapViewWeatherView()
+ updateMapViewTopPadding()
+ startAnimationMapElements()
+ }
+
+ override func viewWillAppear(_ animated: Bool) {
+ super.viewWillAppear(animated)
+
+ setNeedsStatusBarAppearanceUpdate()
+ navBar(hide: true)
+ if !showOnce {
+ mapsContainer.move(type: .hide, animation: false)
+ }
+ }
+
+ override func viewDidAppear(_ animated: Bool) {
+ super.viewDidAppear(animated)
+
+ if !showOnce {
+ showOnce = true
+ mapsContainer.move(type: .middle)
+ }
+ }
+
+ override func viewWillDisappear(_ animated: Bool) {
+ super.viewWillDisappear(animated)
+
+ navBar(hide: false)
+ }
+
+ func navBar(hide: Bool) {
+ self.navigationController?.setNavigationBarHidden(hide, animated: true)
+ }
+
+ override func viewDidDisappear(_ animated: Bool) {
+ super.viewDidDisappear(animated)
+
+ mapsContainer.remove()
+ mapsContainer = nil
+
+ NotificationCenter.default.removeObserver(self)
+ }
+
+ // MARK: - StatusBar Style
+
+ override var preferredStatusBarStyle: UIStatusBarStyle {
+ return darkStyle ? .lightContent : .default
+ }
+
+ // MARK: - Rotation Callback
+
+ @objc func rotated() {
+
+ if !UIDevice.current.orientation.isRotateAllowed { return }
+
+ updateMapViewTopPadding()
+ }
+
+ func updateMapViewTopPadding() {
+
+ let padding: CGFloat = 8
+
+ statusBarBlurHeight.constant = ContainerDevice.statusBarHeight
+
+ let paddingX: CGFloat = (ContainerDevice.isIphoneX ? ContainerDevice.isIphoneXTop : padding)
+
+ var paddingWeatherTop: CGFloat = 0.0
+ var paddingTop: CGFloat = 0.0
+ var paddingRight: CGFloat = 0.0
+
+ let paddingStatusBar: CGFloat = (ContainerDevice.statusBarHeight + padding)
+
+ switch ContainerDevice.orientation {
+ case .portrait:
+ paddingTop = paddingStatusBar
+ paddingRight = padding
+ paddingWeatherTop = padding
+ case .landscapeLeft:
+ paddingTop = ContainerDevice.isIpad ? paddingStatusBar : paddingX
+ paddingRight = ContainerDevice.isIphoneX ? 44 : padding
+ paddingWeatherTop = paddingX
+ case .landscapeRight:
+ paddingTop = ContainerDevice.isIpad ? paddingStatusBar : paddingX
+ paddingRight = paddingX
+ paddingWeatherTop = paddingX
+ }
+
+ var width: CGFloat = 0.0
+ var height: CGFloat = 0.0
+
+
+ switch ContainerDevice.orientation {
+ case .portrait:
+ width = ContainerDevice.screenMin
+ height = ContainerDevice.screenMax
+ case .landscapeLeft,
+ .landscapeRight:
+ width = ContainerDevice.screenMax
+ height = ContainerDevice.screenMin
+ }
+
+ mapWeatherView.x = (width - mapWeatherView.width - paddingRight)
+
+
+ if ContainerDevice.isPortrait, !ContainerDevice.isIpad {
+ mapWeatherView.y = (mapsContainer.view.y - mapWeatherView.height - paddingWeatherTop)
+ } else {
+ mapWeatherView.y = (height - mapWeatherView.height - paddingWeatherTop)
+ }
+
+ mapButtonsPaddingTop.constant = paddingTop
+ mapButtonsPaddingRight.constant = paddingRight
+
+ mapManager.compass.x = (ContainerDevice.width - 47)
+ mapManager.compass.y = (paddingTop + mapButtons.height + 12)
+ }
+
+ // MARK: - Map Manager
+
+ func updateMapManager() {
+
+ mapManager = MapViewManager(mapView: mapView)
+ mapManager.compass.y = (mapButtons.bottom + 12)
+ mapManager.selectPinCallback = { [weak self] in
+ guard let _self = self else { return }
+ _self.mapsContainer.showLocationDetails()
+ }
+ mapManager.changeRegionCallback = { [weak self] in
+ guard let _self = self else { return }
+ _self.mapButtons.changeButtonLocation(fill: false)
+ }
+ }
+
+ // MARK: - Map Long-Press
+
+ @IBAction func handleLong(_ recognizer: UILongPressGestureRecognizer) {
+ if routeContainer != nil { return }
+
+ switch recognizer.state {
+ case .began:
+
+ mapManager.addMapPinFrom(longPress: recognizer)
+ mapsContainer.showLocationDetails()
+
+ default: break
+ }
+ }
+
+
+ // MARK: - Map Buttons Update
+
+ func updateMapViewButtons() {
+
+ mapButtons.addBlur(darkStyle: darkStyle)
+ mapButtons.alpha = 0.0
+ mapButtons.buttonsActionCallback = { [weak self] (_ index: Int) in
+ guard let _self = self else { return }
+
+ if (index == 0) {
+ _self.showMenuContainer()
+ } else {
+ _self.mapButtons.changeButtonLocation(fill: true)
+
+ if let coor = _self.mapView.userLocation.location?.coordinate {
+ _self.mapView.setCenter(coor, animated: true)
+ }
+ }
+ }
+
+ }
+
+ func updateMapViewWeatherView() {
+
+ mapWeatherView.addBlur(darkStyle: darkStyle)
+ mapWeatherView.alpha = 0.0
+ }
+
+ func startAnimationMapElements() {
+
+ UIView.animate(withDuration: 1.0, animations: { [weak self] in
+ guard let _self = self else { return }
+ _self.mapWeatherView.alpha = 1.0
+ _self.mapButtons.alpha = 1.0
+ })
+ }
+
+ // MARK: - Map Buttons Alpha
+
+ func mapButtons(alpha: CGFloat, animation: Bool = true) {
+ if ContainerDevice.isPortrait, !ContainerDevice.isIpad {
+ if animation {
+ UIView.animate(withDuration: 0.15, animations: { [weak self] in
+ guard let _self = self else { return }
+ _self.mapButtons.alpha = alpha
+ _self.mapWeatherView.alpha = alpha
+ })
+ } else {
+ mapButtons.alpha = alpha
+ mapWeatherView.alpha = alpha
+ }
+ } else {
+ mapButtons.alpha = 1.0
+ mapWeatherView.alpha = 1.0
+ }
+ }
+
+ // MARK: - Change Position MapElements
+
+ func changePositionMapsElements(container: ContainerController, position: CGFloat, type: ContainerMoveType, animation: Bool) {
+ if type == .hide { return }
+
+ let result = (container.positionMiddle - position)
+ var alpha: CGFloat = (1.0 - (result / 20.0))
+
+ if 20.0 < result {
+ alpha = 0.0
+ } else if result < 0.0 {
+ alpha = 1.0
+ }
+
+ if animation {
+ if type == .top {
+ mapButtons(alpha: 0.0, animation: true)
+ } else {
+ mapButtons(alpha: 1.0, animation: true)
+ }
+
+ if type != .top {
+ if ContainerDevice.isPortrait, !ContainerDevice.isIpad {
+ mapWeatherView.y = (position - mapWeatherView.height - 8)
+ }
+ }
+
+ } else {
+ mapButtons(alpha: alpha, animation: false)
+
+ if ContainerDevice.isPortrait, !ContainerDevice.isIpad {
+ if result < 0.0 {
+ mapWeatherView.y = (position - mapWeatherView.height - 8)
+ } else {
+ mapWeatherView.y = (container.positionMiddle - mapWeatherView.height - 8)
+ }
+ }
+ }
+
+ if animation, type != .top {
+ view.endEditing(true)
+ }
+ }
+
+ // MARK: - Change Index Menu
+
+ func menuChange(index: Int) {
+
+ selectedIndex = index
+ darkStyle = (index == 2)
+
+ mapsContainer.update(darkStyle: darkStyle)
+ locationContainer?.update(darkStyle: darkStyle)
+ routeContainer?.update(darkStyle: darkStyle)
+
+ mapButtons.addBlur(darkStyle: darkStyle)
+ mapWeatherView.addBlur(darkStyle: darkStyle)
+
+ switch selectedIndex {
+ case 0: mapView.mapType = .standard
+ case 1: mapView.mapType = .mutedStandard
+ case 2: mapView.mapType = .hybrid
+ default: break
+ }
+
+ let style: UIBlurEffect.Style = darkStyle ? .systemUltraThinMaterialDark : .regular
+ statusBlur.effect = UIBlurEffect(style: style)
+
+ setNeedsStatusBarAppearanceUpdate()
+ }
+
+ // MARK: - Show Maps-Container
+
+ func showMapsContainer() {
+ mapsContainer = MapsContainerController(addTo: self, darkStyle: darkStyle)
+ mapsContainer.mapsDelegate = self
+ }
+
+ // MARK: Delegate
+
+ func mapsContainerController(showLocationDetails mapsContainerController: MapsContainerController) {
+ mapsContainer.move(type: .hide)
+ showLocationDetailsContainer()
+ mapManager.selectPinAnimation(show: true)
+ }
+
+ func mapsContainerController(move mapsContainerController: MapsContainerController, position: CGFloat, type: ContainerMoveType, animation: Bool) {
+ changePositionMapsElements(container: mapsContainerController, position: position, type: type, animation: animation)
+ }
+
+ //MARK: - Show Location-Details
+
+ func showLocationDetailsContainer() {
+ if locationContainer != nil { return }
+
+ locationContainer = LocationContainerController(addTo: self, darkStyle: darkStyle)
+ locationContainer?.locationDelegate = self
+ locationContainer?.move(type: ContainerDevice.isPortrait ? .middle : .top)
+ }
+
+ // MARK: Delegate
+
+ func locationContainerController(showRoute locationContainerController: LocationContainerController) {
+ locationContainer?.move(type: .hide)
+ showRouteContainer()
+ mapManager.showRouteOnMapMyLocation()
+ }
+
+ func locationContainerController(close locationContainerController: LocationContainerController) {
+ mapManager.selectPinAnimation(show: false)
+
+ let animation = locationContainerController.oldMoveType != .middle
+
+ mapsContainer.move(type: .middle, animation: animation)
+ }
+
+ func locationContainerController(closeComplection locationContainerController: LocationContainerController) {
+ locationContainer = nil
+ }
+
+ func locationContainerController(move locationContainerController: LocationContainerController, position: CGFloat, type: ContainerMoveType, animation: Bool) {
+ changePositionMapsElements(container: locationContainerController, position: position, type: type, animation: animation)
+ }
+
+ //MARK: - Show Route
+
+ func showRouteContainer() {
+ if routeContainer != nil { return }
+
+ routeContainer = RouteContainerController(addTo: self, darkStyle: darkStyle)
+ routeContainer?.routeDelegate = self
+ routeContainer?.move(type: ContainerDevice.isPortrait ? .middle : .top)
+ }
+
+ // MARK: Delegate
+
+ func routeContainerController(close routeContainerController: RouteContainerController) {
+ mapManager.closeRoute(showSelectPin: true)
+ locationContainer?.move(type: .middle)
+ }
+
+ func routeContainerController(closeComplection routeContainerController: RouteContainerController) {
+ routeContainer = nil
+ }
+
+ func routeContainerController(move routeContainerController: RouteContainerController, position: CGFloat, type: ContainerMoveType, animation: Bool) {
+ changePositionMapsElements(container: routeContainerController, position: position, type: type, animation: animation)
+ }
+
+ // MARK: - Show Menu-Container
+
+ func showMenuContainer() {
+ if menuContainer != nil { return }
+
+ menuContainer = MenuContainerController(addTo: self, darkStyle: darkStyle, selectedIndex: selectedIndex)
+ menuContainer?.menuDelegate = self
+
+ mapButtons(alpha: 0.0)
+ }
+
+ // MARK: Delegate
+
+ func menuContainerController(close menuContainerController: MenuContainerController) {
+ mapButtons(alpha: 1.0)
+ }
+
+ func menuContainerController(closeComplection menuContainerController: MenuContainerController) {
+ menuContainer = nil
+ }
+
+ func menuContainerController(segment menuContainerController: MenuContainerController, selectedIndex: Int) {
+ menuChange(index: selectedIndex)
+ }
+}
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.swift
new file mode 100644
index 0000000..6106fe7
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.swift
@@ -0,0 +1,85 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// MARK: - Item
+
+class LocationAddressCellItem: TableAdapterItem {
+
+ init(title: String? = nil,
+ subtitle: String? = nil,
+ darkStyle: Bool = false) {
+
+ let cellData = LocationAddressCellData(title, subtitle, darkStyle)
+
+ super.init(cellClass: LocationAddressCell .self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+class LocationAddressCellData: TableAdapterCellData {
+
+ // MARK: Properties
+
+ var title: String?
+ var subtitle: String?
+ var darkStyle: Bool
+
+ // MARK: Inits
+
+ init(_ title: String? = nil,
+ _ subtitle: String? = nil,
+ _ darkStyle: Bool) {
+
+ self.title = title
+ self.subtitle = subtitle
+ self.darkStyle = darkStyle
+
+ super.init()
+ }
+
+ override public func cellHeight() -> CGFloat {
+ return 159
+ }
+
+}
+
+// MARK: - Cell
+
+class LocationAddressCell : TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: LocationAddressCellData?
+
+ // MARK: Outlets
+
+ @IBOutlet override var selectedView: UIView? {
+ didSet { }
+ }
+
+ @IBOutlet private weak var titleLabel: UILabel?
+ @IBOutlet private weak var textLabel2: UILabel?
+
+ // MARK: Initialize
+
+ override func awakeFromNib() {
+ separatorInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: CGFloat(Double.greatestFiniteMagnitude))
+ }
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? LocationAddressCellData else { return }
+ self.data = data
+
+ titleLabel?.text = _L("LNG_MAPS_ADDRESS")
+ textLabel2?.text = "\(_L("LNG_MAPS_STREET")), 16c2, .....\n\(_L("LNG_MAPS_CITY"))\n\(_L("LNG_MAPS_COUNTRY"))\n101000"
+
+ textLabel2?.textColor = data.darkStyle ? .white : .black
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.xib
new file mode 100644
index 0000000..41e5f0a
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.xib
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.swift
new file mode 100644
index 0000000..b87ecf2
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.swift
@@ -0,0 +1,127 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+enum LocationButtonCellType {
+ case blue // 0 122 255
+ case gray // 0 0 0 9%
+}
+
+// MARK: - Item
+
+class LocationButtonCellItem: TableAdapterItem {
+
+ init(title: String? = nil,
+ subtitle: String? = nil,
+ type: LocationButtonCellType,
+ clickCallback: (() -> ())? = nil) {
+
+ let cellData = LocationButtonCellData(title, subtitle, type, clickCallback)
+
+ super.init(cellClass: LocationButtonCell.self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+open class LocationButtonCellData: TableAdapterCellData {
+
+ // MARK: Properties
+
+ var title: String?
+ var subtitle: String?
+ var type: LocationButtonCellType
+ var clickCallback: (() -> ())?
+
+ // MARK: Inits
+
+ init(_ title: String? = nil,
+ _ subtitle: String? = nil,
+ _ type: LocationButtonCellType,
+ _ clickCallback:(() -> ())?) {
+
+ self.title = title
+ self.subtitle = subtitle
+ self.type = type
+ self.clickCallback = clickCallback
+
+ super.init()
+ }
+
+ override public func cellHeight() -> CGFloat {
+ return 62
+ }
+
+}
+
+// MARK: - Cell
+
+class LocationButtonCell : TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: LocationButtonCellData?
+
+ // MARK: Outlets
+
+ @IBOutlet override var selectedView: UIView? {
+ didSet { }
+ }
+
+ @IBOutlet private weak var button: DesignButton?
+
+ @IBOutlet weak var view2: UIView!
+ @IBOutlet private weak var titleLabel2: UILabel?
+
+ @IBOutlet weak var view: UIView!
+ @IBOutlet private weak var titleLabel: UILabel?
+ @IBOutlet private weak var subtitleLabel: UILabel?
+
+ // MARK: Initialize
+
+ override func awakeFromNib() {
+ separatorInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: CGFloat(Double.greatestFiniteMagnitude))
+ }
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? LocationButtonCellData else { return }
+ self.data = data
+
+
+ switch data.type {
+ case .blue:
+ view.alpha = 1.0
+ view2.alpha = 0.0
+
+ titleLabel?.text = data.title ?? ""
+ subtitleLabel?.text = data.subtitle ?? ""
+// titleLabelY?.constant = 15
+// titleLabel?.textColor = .white
+// subtitleLabel?.textColor = .white
+// button?.fillColor = .systemBlue
+// button?.hideAnimation = false
+
+ case .gray:
+
+ view.alpha = 0.0
+ view2.alpha = 1.0
+ titleLabel2?.text = data.title ?? ""
+// titleLabelY?.constant = 23
+// titleLabel?.textColor = .systemBlue
+// subtitleLabel?.textColor = .systemBlue
+// button?.fillColor = Colors.rgba(130, 130, 130, 0.15)
+// button?.hideAnimation = true
+ }
+
+
+ }
+
+ @IBAction func buttonClickAction(_ sender: Any) {
+ data?.clickCallback?()
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.xib
new file mode 100644
index 0000000..871a219
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.xib
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.swift
new file mode 100644
index 0000000..389a230
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.swift
@@ -0,0 +1,58 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// MARK: - Item
+
+class LocationCollectionsButtonCellItem: TableAdapterItem {
+
+ init() {
+
+ let cellData = LocationCollectionsButtonCellData()
+
+ super.init(cellClass: LocationCollectionsButtonCell .self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+class LocationCollectionsButtonCellData: TableAdapterCellData {
+
+ override public func cellHeight() -> CGFloat {
+ return 124
+ }
+
+}
+
+// MARK: - Cell
+
+class LocationCollectionsButtonCell : TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: LocationCollectionsButtonCellData?
+
+ // MARK: Outlets
+
+ @IBOutlet private weak var removeLabel: UILabel?
+ @IBOutlet private weak var addtoLabel: UILabel?
+ @IBOutlet private weak var shareLabel: UILabel?
+
+ // MARK: Initialize
+
+ override func awakeFromNib() {
+ separatorInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: CGFloat(Double.greatestFiniteMagnitude))
+ }
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? LocationCollectionsButtonCellData else { return }
+ self.data = data
+
+ removeLabel?.text = _L("LNG_MAPS_REMOVE")
+ addtoLabel?.text = "\(_L("LNG_MAPS_ADD")) \(_L("LNG_MAPS_TO"))..."
+ shareLabel?.text = _L("LNG_MAPS_SHARE")
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.xib
new file mode 100644
index 0000000..70afc7a
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.xib
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.swift
new file mode 100644
index 0000000..aee0fb7
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.swift
@@ -0,0 +1,101 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// MARK: - Item
+
+class LocationCoordinateCellItem: TableAdapterItem {
+
+ init(title: String? = nil,
+ subtitle: String? = nil,
+ darkStyle: Bool = false) {
+
+ let cellData = LocationCoordinateCellData(title, subtitle, darkStyle)
+
+ super.init(cellClass: LocationCoordinateCell .self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+class LocationCoordinateCellData: TableAdapterCellData {
+
+ // MARK: Properties
+
+ var title: String?
+ var subtitle: String?
+ var darkStyle: Bool
+
+ // MARK: Inits
+
+ init(_ title: String? = nil,
+ _ subtitle: String? = nil,
+ _ darkStyle: Bool) {
+
+ self.title = title
+ self.subtitle = subtitle
+ self.darkStyle = darkStyle
+
+ super.init()
+ }
+
+ override public func cellHeight() -> CGFloat {
+ return 89
+ }
+
+}
+
+// MARK: - Cell
+
+class LocationCoordinateCell : TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: LocationCoordinateCellData?
+
+ // MARK: Outlets
+
+ @IBOutlet override var selectedView: UIView? {
+ didSet { }
+ }
+
+ @IBOutlet weak var latitudeLabel: UILabel!
+ @IBOutlet weak var latitudeValueLabel: UILabel!
+
+ @IBOutlet weak var longitudeLabel: UILabel!
+ @IBOutlet weak var longitudeValueLabel: UILabel!
+
+
+ @IBOutlet public weak var separatorView: UIView?
+ @IBOutlet weak var separatorHeight: NSLayoutConstraint?
+
+ // MARK: Initialize
+
+ override func awakeFromNib() {
+ separatorHeight?.constant = 0.5
+ separatorInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: CGFloat(Double.greatestFiniteMagnitude))
+ }
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? LocationCoordinateCellData else { return }
+ self.data = data
+
+ let color: UIColor = data.darkStyle ? .white : .black
+
+ latitudeLabel.text = _L("LNG_MAPS_LOCATION_LATITUDE")
+ longitudeLabel.text = _L("LNG_MAPS_LOCATION_LONGITUDE")
+
+ latitudeLabel.textColor = color
+ latitudeValueLabel.textColor = color
+
+ longitudeLabel.textColor = color
+ longitudeValueLabel.textColor = color
+
+
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.xib
new file mode 100644
index 0000000..817d513
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.xib
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.swift
new file mode 100644
index 0000000..6e27ae6
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.swift
@@ -0,0 +1,83 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// MARK: - Item
+
+class LocationTextCellItem: TableAdapterItem {
+
+ init(title: String? = nil,
+ image: UIImage? = nil) {
+
+ let cellData = LocationTextCellData(title, image)
+
+ super.init(cellClass: LocationTextCell.self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+class LocationTextCellData: TableAdapterCellData {
+
+ // MARK: Properties
+
+ var title: String?
+ var image: UIImage?
+
+ // MARK: Inits
+
+ init(_ title: String? = nil,
+ _ image: UIImage? = nil) {
+
+ self.title = title
+ self.image = image
+
+ super.init()
+ }
+
+ override public func cellHeight() -> CGFloat {
+ return 61
+ }
+
+}
+
+// MARK: - Cell
+
+class LocationTextCell : TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: LocationTextCellData?
+
+ // MARK: Outlets
+
+ @IBOutlet override var selectedView: UIView? {
+ didSet { }
+ }
+
+ @IBOutlet private weak var titleLabel: UILabel?
+ @IBOutlet private weak var imageButton: DesignButton?
+
+ // MARK: Initialize
+
+ override func awakeFromNib() {
+ separatorInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: CGFloat(Double.greatestFiniteMagnitude))
+ }
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? LocationTextCellData else { return }
+ self.data = data
+
+ titleLabel?.text = data.title ?? ""
+
+ if let image = data.image {
+ imageButton?.setImage(image, for: .normal)
+ }
+
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.xib
new file mode 100644
index 0000000..b3b5d4b
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.xib
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionCellView.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionCellView.swift
new file mode 100644
index 0000000..19879b4
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionCellView.swift
@@ -0,0 +1,36 @@
+//
+// MapsCollectionCellView.swift
+// PatternsSwift
+//
+// Created by mrustaa on 13/05/2020.
+// Copyright © 2020 mrusta. All rights reserved.
+//
+
+import UIKit
+
+@IBDesignable
+class MapsCollectionCellView: UIView {
+
+ override func draw(_ rect: CGRect) {
+
+ //// Color Declarations
+ let color10 = Colors.rgba(185, 185, 185, 0.37)
+
+ //// Bezier Drawing
+ let bezierPath = UIBezierPath()
+ bezierPath.move(to: CGPoint(x: 4, y: 51))
+ bezierPath.addCurve(to: CGPoint(x: 4, y: 16), controlPoint1: CGPoint(x: 3.9, y: 44.69), controlPoint2: CGPoint(x: 4, y: 24.46))
+ bezierPath.addCurve(to: CGPoint(x: 16, y: 4), controlPoint1: CGPoint(x: 4, y: 6), controlPoint2: CGPoint(x: 6, y: 4))
+ bezierPath.addCurve(to: CGPoint(x: 51, y: 4), controlPoint1: CGPoint(x: 26, y: 4), controlPoint2: CGPoint(x: 51, y: 4))
+ bezierPath.addCurve(to: CGPoint(x: 44, y: -0), controlPoint1: CGPoint(x: 51, y: 4), controlPoint2: CGPoint(x: 50, y: -0))
+ bezierPath.addCurve(to: CGPoint(x: 7, y: -0), controlPoint1: CGPoint(x: 38, y: -0), controlPoint2: CGPoint(x: 11, y: -0))
+ bezierPath.addCurve(to: CGPoint(x: 0, y: 7), controlPoint1: CGPoint(x: 3, y: -0), controlPoint2: CGPoint(x: 0, y: 2))
+ bezierPath.addCurve(to: CGPoint(x: 0, y: 44), controlPoint1: CGPoint(x: 0, y: 12), controlPoint2: CGPoint(x: 0, y: 34.5))
+ bezierPath.addCurve(to: CGPoint(x: 4, y: 51), controlPoint1: CGPoint(x: 0, y: 50), controlPoint2: CGPoint(x: 4, y: 51))
+ bezierPath.close()
+ color10.setFill()
+ bezierPath.fill()
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.swift
new file mode 100644
index 0000000..1ac2fda
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.swift
@@ -0,0 +1,60 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// MARK: - Item
+
+class MapsCollectionsCellItem: TableAdapterItem {
+
+ init() {
+ let cellData = MapsCollectionsCellData()
+ super.init(cellClass: MapsCollectionsCell .self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+class MapsCollectionsCellData: TableAdapterCellData {
+
+ // MARK: Inits
+
+ override public func cellHeight() -> CGFloat {
+ return 98
+ }
+}
+
+// MARK: - Cell
+
+class MapsCollectionsCell : TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: MapsCollectionsCellData?
+
+ // MARK: Outlets
+
+ @IBOutlet override var selectedView: UIView? {
+ didSet { }
+ }
+
+ @IBOutlet private weak var titleLabel: UILabel?
+
+ var collView: MapsCollectionCellView!
+
+ // MARK: Initialize
+
+ override func awakeFromNib() {
+ separatorInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: CGFloat(Double.greatestFiniteMagnitude))
+ }
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? MapsCollectionsCellData else { return }
+ self.data = data
+
+ titleLabel?.text = _L("LNG_MAPS_NEW_COLLECTION")
+
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.xib
new file mode 100644
index 0000000..bc40eab
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.xib
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.swift
new file mode 100644
index 0000000..06163bd
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.swift
@@ -0,0 +1,98 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// MARK: - Item
+
+class MapsFavoritesCellItem: TableAdapterItem {
+
+ init(title: String? = nil,
+ subtitle: String? = nil,
+ image: UIImage? = nil,
+ darkStyle: Bool = false,
+ clickCallback: (() -> Void)? = nil) {
+
+ let cellData = MapsFavoritesCellData(title, subtitle, darkStyle, clickCallback)
+
+ super.init(cellClass: MapsFavoritesCell.self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+class MapsFavoritesCellData: TableAdapterCellData {
+
+ // MARK: Properties
+
+ var title: String?
+ var subtitle: String?
+ var darkStyle: Bool
+ var clickCallback: (() -> Void)?
+
+ // MARK: Inits
+
+ init(_ title: String? = nil,
+ _ subtitle: String? = nil,
+ _ darkStyle: Bool,
+ _ clickCallback: (() -> Void)?) {
+
+ self.title = title
+ self.subtitle = subtitle
+ self.darkStyle = darkStyle
+ self.clickCallback = clickCallback
+
+ super.init()
+ }
+
+ override public func cellHeight() -> CGFloat {
+ return 137
+ }
+
+ class func collectionItems(darkStyle: Bool = false, clickCallback: (() -> Void)? = nil) -> [CollectionAdapterItem] {
+ var items: [CollectionAdapterItem] = []
+ items.append( MapsFavoriteItem(title: _L("LNG_MAPS_HOME"), subtitle: _L("LNG_MAPS_ADD"), colorType: .blue, image: UIImage(systemName:"house.fill"), darkStyle: darkStyle, clickCallback: { clickCallback?() }) )
+ items.append( MapsFavoriteItem(title: _L("LNG_MAPS_WORK"), subtitle: _L("LNG_MAPS_ADD"), colorType: .brown, image: UIImage(systemName: "briefcase.fill"), darkStyle: darkStyle, clickCallback: { clickCallback?() }) )
+ items.append( MapsFavoriteItem(title: _L("LNG_MAPS_STREET"), subtitle: "", colorType: .red, image: UIImage(systemName: "mappin"), darkStyle: darkStyle, clickCallback: { clickCallback?() }) )
+ items.append( MapsFavoriteItem(title: _L("LNG_MAPS_SCORE"), subtitle: "", colorType: .orange, image: UIImage(systemName: "cart.fill"), darkStyle: darkStyle, clickCallback: { clickCallback?() }) )
+ items.append( MapsFavoriteItem(title: _L("LNG_MAPS_STREET"), subtitle: "", colorType: .yellow, image: UIImage(systemName: "person.circle.fill"), darkStyle: darkStyle, clickCallback: { clickCallback?() }) )
+ items.append( MapsFavoriteItem(title: _L("LNG_MAPS_ADD"), subtitle: "", colorType: .gray, image: UIImage(systemName: "plus"), darkStyle: darkStyle, clickCallback: { clickCallback?() }) )
+ return items
+ }
+}
+
+// MARK: - Cell
+
+class MapsFavoritesCell: TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: MapsFavoritesCellData?
+
+ // MARK: Outlets
+
+ @IBOutlet weak var colletionView: CollectionAdapterView!
+ var items: [CollectionAdapterItem] = []
+
+ // MARK: Initialize
+
+ override func awakeFromNib() {
+ separatorInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: CGFloat(Double.greatestFiniteMagnitude))
+ }
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? MapsFavoritesCellData else { return }
+ self.data = data
+
+ items = []
+
+ items = MapsFavoritesCellData.collectionItems(darkStyle: data.darkStyle, clickCallback: data.clickCallback)
+
+ colletionView.set(items: items)
+
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.xib
new file mode 100644
index 0000000..342ac65
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.xib
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.swift
new file mode 100644
index 0000000..51eda7f
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.swift
@@ -0,0 +1,108 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+enum MapsLocationCellColorType {
+ case red
+ case black
+}
+
+// MARK: - Item
+
+class MapsLocationCellItem: TableAdapterItem {
+
+ init(title: String? = nil,
+ subtitle: String? = nil,
+ colorType: MapsLocationCellColorType,
+ darkStyle: Bool = false) {
+
+
+ let cellData = MapsLocationCellData(title, subtitle, colorType, darkStyle)
+
+ super.init(cellClass: MapsLocationCell.self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+class MapsLocationCellData: TableAdapterCellData {
+
+ // MARK: Properties
+
+ var title: String?
+ var subtitle: String?
+ var colorType: MapsLocationCellColorType
+ var darkStyle: Bool
+
+ // MARK: Inits
+
+ init(_ title: String? = nil,
+ _ subtitle: String? = nil,
+ _ colorType: MapsLocationCellColorType,
+ _ darkStyle: Bool) {
+
+ self.title = title
+ self.subtitle = subtitle
+ self.colorType = colorType
+ self.darkStyle = darkStyle
+
+ super.init()
+ }
+
+ override public func cellHeight() -> CGFloat {
+ return 75
+ }
+
+}
+
+// MARK: - Cell
+
+class MapsLocationCell: TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: MapsLocationCellData?
+
+ // MARK: Outlets
+
+ @IBOutlet override var selectedView: UIView? {
+ didSet { }
+ }
+
+ @IBOutlet weak var circleBlackView: DesignView!
+ @IBOutlet weak var circleView: DesignView!
+ @IBOutlet private weak var titleLabel: UILabel?
+ @IBOutlet private weak var subtitleLabel: UILabel?
+
+ // MARK: Initialize
+
+ override func awakeFromNib() {
+ }
+
+ // MARK: Initialize
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? MapsLocationCellData else { return }
+ self.data = data
+
+ titleLabel?.textColor = data.darkStyle ? .white : .black
+
+
+ if data.colorType == .red {
+ circleView.alpha = 1.0
+ circleBlackView.alpha = 0.0
+ } else {
+ circleView.alpha = 0.0
+ circleBlackView.alpha = 1.0
+ }
+
+ titleLabel?.text = data.title ?? ""
+ subtitleLabel?.text = data.subtitle ?? ""
+
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.xib
new file mode 100644
index 0000000..e922e0a
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.xib
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.swift
new file mode 100644
index 0000000..de280db
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.swift
@@ -0,0 +1,72 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// MARK: - Item
+
+class MapsSectionCellItem: TableAdapterItem {
+
+ init(title: String? = nil,
+ textButton: String? = nil) {
+
+ let cellData = MapsSectionCellData(title ?? "", textButton ?? _L("LNG_MAPS_SECTION_SEE_ALL"))
+
+ super.init(cellClass: MapsSectionCell.self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+class MapsSectionCellData: TableAdapterCellData {
+
+ // MARK: Properties
+
+ var title: String
+ var textButton: String
+
+ // MARK: Inits
+
+ init(_ title: String,
+ _ textButton: String) {
+
+ self.title = title
+ self.textButton = textButton
+
+ super.init()
+ }
+
+ override public func cellHeight() -> CGFloat {
+ return 30
+ }
+
+}
+
+// MARK: - Cell
+
+class MapsSectionCell: TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: MapsSectionCellData?
+
+ // MARK: Outlets
+
+ @IBOutlet private weak var titleLabel: UILabel?
+ @IBOutlet private weak var textButton: UIButton?
+
+ // MARK: Initialize
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? MapsSectionCellData else { return }
+ self.data = data
+
+ titleLabel?.text = data.title
+ textButton?.setTitle( data.textButton, for: .normal)
+
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.xib
new file mode 100644
index 0000000..42f9fea
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.xib
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.swift
new file mode 100644
index 0000000..7514b37
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.swift
@@ -0,0 +1,94 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+
+typealias SegmentIndexCallback = ((_ segmentIndex: Int) -> ())
+
+
+// MARK: - Item
+
+class MapsMenuSegmentCellItem: TableAdapterItem {
+
+ init(selected: Int, darkStyle: Bool = false, selectIndexCallback: SegmentIndexCallback? = nil) {
+
+ let cellData = MapsMenuSegmentCellData(selected, darkStyle, selectIndexCallback)
+
+ super.init(cellClass: MapsMenuSegmentCell.self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+class MapsMenuSegmentCellData: TableAdapterCellData {
+
+ // MARK: Properties
+
+ var segmentIndexCallback: SegmentIndexCallback?
+ var selectedIndex: Int
+ var darkStyle: Bool
+
+ // MARK: Inits
+
+ init(_ selected: Int, _ darkStyle: Bool, _ segmentIndexCallback: SegmentIndexCallback?) {
+
+ self.darkStyle = darkStyle
+ self.segmentIndexCallback = segmentIndexCallback
+ self.selectedIndex = selected
+
+ super.init()
+ }
+
+ override public func cellHeight() -> CGFloat {
+ return 48
+ }
+
+}
+
+// MARK: - Cell
+
+class MapsMenuSegmentCell: TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: MapsMenuSegmentCellData?
+
+ // MARK: Outlets
+
+ @IBOutlet weak var segment: UISegmentedControl!
+
+ // MARK: Initialize
+
+ override func awakeFromNib() {
+
+// segment.insertSegment(withTitle: _L("LNG_MAPS_MENU_MAP"), at: 0, animated: false)
+// segment.insertSegment(withTitle: _L("LNG_MAPS_TRANSIT"), at: 1, animated: false)
+// segment.insertSegment(withTitle: _L("LNG_MAPS_MENU_SATELLITE"), at: 2, animated: false)
+
+ segment.setTitle(_L("LNG_MAPS_MENU_MAP"), forSegmentAt: 0)
+ segment.setTitle(_L("LNG_MAPS_TRANSIT"), forSegmentAt: 1)
+ segment.setTitle(_L("LNG_MAPS_MENU_SATELLITE"), forSegmentAt: 2)
+
+ separatorInset = UIEdgeInsets(top: 0.0, left: 16.0, bottom: 0.0, right: 16.0)
+// separatorInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: CGFloat(Double.greatestFiniteMagnitude))
+ }
+
+ @IBAction func segmentAction(_ sender: Any) {
+ data?.segmentIndexCallback?(segment.selectedSegmentIndex)
+ }
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? MapsMenuSegmentCellData else { return }
+ self.data = data
+
+ segment.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: (data.darkStyle ? UIColor.white : UIColor.black)], for: .normal)
+ segment.selectedSegmentTintColor = (data.darkStyle ? UIColor.white.withAlphaComponent(0.35) : UIColor.white)
+
+ segment.selectedSegmentIndex = data.selectedIndex
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.xib
new file mode 100644
index 0000000..9309e9a
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.xib
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.swift
new file mode 100644
index 0000000..9fb19cb
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.swift
@@ -0,0 +1,65 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// MARK: - Item
+
+class MapsMenuSpaceCellItem: TableAdapterItem {
+
+ init(cellHeight: Int = 7) {
+
+ let cellData = MapsMenuSpaceCellData(cellHeight)
+
+ super.init(cellClass: MapsMenuSpaceCell.self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+class MapsMenuSpaceCellData: TableAdapterCellData {
+
+ // MARK: Properties
+
+ var cheight: Int
+
+ // MARK: Inits
+
+ init(_ cellHeight: Int = 7) {
+
+ self.cheight = cellHeight
+
+ super.init()
+ }
+
+ override public func cellHeight() -> CGFloat {
+ return CGFloat(cheight)
+ }
+
+}
+
+// MARK: - Cell
+
+class MapsMenuSpaceCell: TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: MapsMenuSpaceCellData?
+
+ // MARK: Outlets
+
+ override func awakeFromNib() {
+ separatorInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: CGFloat(Double.greatestFiniteMagnitude))
+ }
+ // MARK: Initialize
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? MapsMenuSpaceCellData else { return }
+ self.data = data
+
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.xib
new file mode 100644
index 0000000..93f17cb
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.xib
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.swift
new file mode 100644
index 0000000..2b57eb8
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.swift
@@ -0,0 +1,94 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+
+// MARK: - Item
+
+class MapsMenuTextCellItem: TableAdapterItem {
+
+ init(title: String? = nil, switchShow: Bool = false, darkStyle: Bool = false, separator: Bool = true) {
+
+ let cellData = MapsMenuTextCellData(title, switchShow, darkStyle, separator)
+
+ super.init(cellClass: MapsMenuTextCell.self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+class MapsMenuTextCellData: TableAdapterCellData {
+
+ // MARK: Properties
+
+ var title: String?
+ var switchShow: Bool
+ var separator: Bool
+ var darkStyle: Bool
+
+ // MARK: Inits
+
+ init(_ title: String? = nil, _ switchShow: Bool, _ darkStyle: Bool, _ separator: Bool) {
+
+ self.title = title
+ self.switchShow = switchShow
+ self.separator = separator
+ self.darkStyle = darkStyle
+
+ super.init()
+ }
+
+ override public func cellHeight() -> CGFloat {
+ return 48
+ }
+
+}
+
+// MARK: - Cell
+
+class MapsMenuTextCell: TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: MapsMenuTextCellData?
+
+ // MARK: Outlets
+
+ @IBOutlet override var selectedView: UIView? {
+ didSet { }
+ }
+
+ @IBOutlet private weak var titleLabel: UILabel?
+ @IBOutlet private weak var hiddenSwitch: UISwitch!
+
+ // MARK: Initialize
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? MapsMenuTextCellData else { return }
+ self.data = data
+
+ titleLabel?.text = data.title ?? ""
+
+ if data.switchShow {
+ selectionStyle = .none
+ hiddenSwitch.alpha = 1.0
+ titleLabel?.textColor = data.darkStyle ? .white : .black
+ } else {
+ selectionStyle = .default
+ hiddenSwitch.alpha = 0.0
+ titleLabel?.textColor = .systemBlue
+ }
+
+ if data.separator {
+ separatorInset = UIEdgeInsets(top: 0.0, left: 16.0, bottom: 0.0, right: 16.0)
+ } else {
+ separatorInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: CGFloat(Double.greatestFiniteMagnitude))
+ }
+
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.xib
new file mode 100644
index 0000000..fb53bb7
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.xib
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.swift
new file mode 100644
index 0000000..ca13d27
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.swift
@@ -0,0 +1,107 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// MARK: - Item
+
+class MapsRouteCellItem: TableAdapterItem {
+
+ init(darkStyle: Bool = false,
+ title: String? = nil,
+ subtitle: String? = nil,
+ separator: Bool = true,
+ selected: Bool = false) {
+
+ let cellData = MapsRouteCellData(title ?? "42 min",
+ subtitle ?? "Street Polyany\nFastest",
+ darkStyle,
+ separator,
+ selected)
+
+ super.init(cellClass: MapsRouteCell.self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+class MapsRouteCellData: TableAdapterCellData {
+
+ // MARK: Properties
+
+ var title: String
+ var subtitle: String
+ var darkStyle: Bool
+ var separator: Bool
+ var selected: Bool
+
+ // MARK: Inits
+
+ init(_ title: String,
+ _ subtitle: String,
+ _ darkStyle: Bool,
+ _ separator: Bool,
+ _ selected: Bool) {
+
+ self.title = title
+ self.subtitle = subtitle
+ self.darkStyle = darkStyle
+ self.separator = separator
+ self.selected = selected
+
+ super.init()
+ }
+
+ class func height() -> CGFloat {
+ return (ContainerDevice.isIphoneX ? 164.0 : 135.0)
+ }
+
+ override public func cellHeight() -> CGFloat {
+ return MapsRouteCellData.height()
+ }
+
+}
+
+// MARK: - Cell
+
+class MapsRouteCell: TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: MapsRouteCellData?
+
+ // MARK: Outlets
+
+ @IBOutlet override var selectedView: UIView? {
+ didSet { }
+ }
+
+ @IBOutlet private weak var mainView: UIView?
+ @IBOutlet private weak var titleLabel: UILabel?
+ @IBOutlet private weak var textLabel2: UILabel?
+
+
+ // MARK: Initialize
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? MapsRouteCellData else { return }
+ self.data = data
+
+ titleLabel?.textColor = data.darkStyle ? .white : .black
+ titleLabel?.text = data.title
+
+ textLabel2?.text = data.subtitle
+
+ mainView?.backgroundColor = data.selected ? Colors.rgba(155, 155, 155, 0.1) : .clear /// UIColor.black.withAlphaComponent(0.03) : .clear
+
+ if data.separator {
+ separatorInset = UIEdgeInsets(top: 0.0, left: 16.0, bottom: 0.0, right: 0.0)
+ } else {
+ separatorInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: CGFloat(Double.greatestFiniteMagnitude))
+ }
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.xib
new file mode 100644
index 0000000..99e28ea
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.xib
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.swift
new file mode 100644
index 0000000..99aa194
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.swift
@@ -0,0 +1,95 @@
+
+
+
+
+import UIKit
+import ContainerController
+
+// MARK: - Item
+
+class MapsSearchCellItem: TableAdapterItem {
+
+ init(darkStyle: Bool = false,
+ title: String? = nil,
+ color: UIColor? = nil,
+ separator: Bool = true) {
+
+ let cellData = MapsSearchCellData(title ?? "",
+ color ?? UIColor.systemBlue,
+ darkStyle,
+ separator)
+
+ super.init(cellClass: MapsSearchCell.self, cellData: cellData)
+ }
+}
+
+// MARK: - Data
+
+class MapsSearchCellData: TableAdapterCellData {
+
+ // MARK: Properties
+
+ var title: String
+ var color: UIColor
+ var darkStyle: Bool
+ var separator: Bool
+
+ // MARK: Inits
+
+ init(_ title: String,
+ _ color: UIColor,
+ _ darkStyle: Bool,
+ _ separator: Bool) {
+
+ self.title = title
+ self.color = color
+ self.darkStyle = darkStyle
+ self.separator = separator
+
+ super.init()
+ }
+
+ override public func cellHeight() -> CGFloat {
+ return 59
+ }
+
+}
+
+// MARK: - Cell
+
+class MapsSearchCell: TableAdapterCell {
+
+ // MARK: Properties
+
+ public var data: MapsSearchCellData?
+
+ // MARK: Outlets
+
+ @IBOutlet override var selectedView: UIView? {
+ didSet { }
+ }
+
+ @IBOutlet private weak var titleLabel: UILabel?
+ @IBOutlet weak var colorView: DesignView!
+
+ // MARK: Initialize
+
+ override func fill(data: TableAdapterCellData?) {
+ guard let data = data as? MapsSearchCellData else { return }
+ self.data = data
+
+ titleLabel?.textColor = data.darkStyle ? .white : .black
+
+ titleLabel?.text = data.title
+ colorView.fillColor = data.color
+
+
+ if data.separator {
+ separatorInset = UIEdgeInsets(top: 0.0, left: 16.0, bottom: 0.0, right: 0.0)
+ } else {
+ separatorInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: CGFloat(Double.greatestFiniteMagnitude))
+ }
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.xib
new file mode 100644
index 0000000..133fdbe
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.xib
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.swift
new file mode 100644
index 0000000..89b35fb
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.swift
@@ -0,0 +1,123 @@
+
+
+
+import UIKit
+import ContainerController
+
+
+enum MapsFavoriteColorType {
+ case blue // 0 174 239
+ case brown // 173 120 85
+ case red // 255 92 71
+ case orange // Colors.rgb(248, 149, 64)
+ case yellow // : UIColor = Colors.rgb(255, 179, 0)
+ case gray // 118 118 128 15%
+}
+
+class MapsFavoriteItem: CollectionAdapterItem {
+
+ init(title: String? = nil,
+ subtitle: String? = nil,
+ colorType: MapsFavoriteColorType,
+ image: UIImage? = nil,
+ darkStyle: Bool = false,
+ clickCallback: (() -> Void)? = nil) {
+
+ let cellData = MapsFavoriteCellData(title, subtitle, colorType, image, darkStyle, clickCallback)
+
+ super.init(cellClass: MapsFavoriteCell.self, cellData: cellData)
+ }
+}
+
+
+class MapsFavoriteCellData: CollectionAdapterCellData {
+
+ // MARK: Properties
+
+ public let title: String
+ public let subTitle: String
+ public let colorType: MapsFavoriteColorType
+ public let image: UIImage?
+ public let darkStyle: Bool
+ public var clickCallback: (() -> Void)?
+
+ // MARK: Inits
+
+ public init (_ title: String?,
+ _ subTitle: String?,
+ _ colorType: MapsFavoriteColorType,
+ _ image: UIImage?,
+ _ darkStyle: Bool,
+ _ clickCallback: (() -> Void)?) {
+
+ self.title = title ?? ""
+ self.subTitle = subTitle ?? ""
+ self.colorType = colorType
+ self.image = image
+ self.darkStyle = darkStyle
+ self.clickCallback = clickCallback
+
+ super.init()
+ }
+
+ override public func size() -> CGSize {
+ return CGSize(width: 86, height: 137)
+ }
+}
+
+
+class MapsFavoriteCell: CollectionAdapterCell {
+
+ // MARK: Outlets
+
+ @IBOutlet weak var imageButton: DesignButton?
+ @IBOutlet weak var titleLabel: UILabel?
+ @IBOutlet weak var subtitleLabel: UILabel?
+
+ // MARK: Properties
+
+ public var data: MapsFavoriteCellData?
+
+ override func awakeFromNib() {
+
+ }
+
+ override func fill(data: Any?) {
+
+ guard let data = data as? MapsFavoriteCellData else { return }
+ self.data = data
+
+ titleLabel?.textColor = data.darkStyle ? .white : .black
+
+ titleLabel?.text = data.title
+ subtitleLabel?.text = data.subTitle
+
+ if let image = data.image {
+ imageButton?.setImage(image, for: .normal)
+ }
+
+ var color: UIColor
+
+ switch data.colorType {
+ case .blue: color = Colors.rgb(0, 174, 239)
+ case .red: color = Colors.rgb(255, 92, 71)
+ case .brown: color = Colors.rgb(173, 120, 85)
+ case .orange: color = Colors.rgb(248, 149, 64)
+ case .yellow: color = Colors.rgb(255, 179, 0)
+ case .gray: color = Colors.rgba(155, 155, 155, 0.2)
+ }
+
+ if data.colorType == .gray {
+ imageButton?.tintColor = .systemBlue
+ } else {
+ imageButton?.tintColor = .white
+ }
+
+ imageButton?.layer.backgroundColor = color.cgColor
+ imageButton?.fillColor = color
+ }
+
+ @IBAction func buttonClickAction(_ sender: Any) {
+ data?.clickCallback?()
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.xib
new file mode 100644
index 0000000..e5df2be
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.xib
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsButtons/MapsButtons.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsButtons/MapsButtons.swift
new file mode 100644
index 0000000..d2dacf3
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsButtons/MapsButtons.swift
@@ -0,0 +1,69 @@
+//
+// TripsDayEmptyView.swift
+// GTDriver
+//
+// Created by mrustaa on 16/01/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+
+class MapsButtons: XibView {
+
+ // MARK: - IBOutlets
+
+ @IBOutlet weak var buttonMenu: UIButton!
+ @IBOutlet weak var buttonLocation: UIButton!
+
+ @IBOutlet weak var mainView: DesignView!
+ var visualEffectView: UIVisualEffectView?
+
+ var buttonsActionCallback: ((_ index: Int) -> Void)?
+
+ override func loadedFromNib() {
+ backgroundColor = .clear
+ }
+
+ // MARK: - IBAction
+
+ public func changeButtonLocation(fill: Bool) {
+ let sysName = fill ? "location.fill" : "location"
+ buttonLocation.setImage(UIImage(systemName: sysName), for: .normal)
+ }
+
+ @IBAction func buttonInfoAction(_ sender: UIButton) {
+ if let buttonsActionCallback = buttonsActionCallback {
+ return buttonsActionCallback(0)
+ }
+ }
+
+ @IBAction func buttonLocationAction(_ sender: UIButton) {
+ if let buttonsActionCallback = buttonsActionCallback {
+ return buttonsActionCallback(1)
+ }
+ }
+
+ func addBlur(darkStyle: Bool) {
+ let style: UIBlurEffect.Style = darkStyle ? .systemThinMaterialDark : .systemChromeMaterialLight
+
+ buttonMenu.tintColor = darkStyle ? .white : .systemBlue
+ buttonLocation.tintColor = darkStyle ? .white : .systemBlue
+
+ mainView.fillColor = .clear
+
+ if visualEffectView == nil {
+ let blurView = UIVisualEffectView(effect: UIBlurEffect(style: style))
+ mainView.insertSubview(blurView, at: 0)
+ visualEffectView = blurView
+ }
+
+ visualEffectView?.effect = UIBlurEffect(style: style)
+ visualEffectView?.bounds = bounds
+ visualEffectView?.x = 0
+ visualEffectView?.y = 0
+ visualEffectView?.layer.cornerRadius = 8.0
+ visualEffectView?.layer.masksToBounds = true
+ visualEffectView?.autoresizingMask = [.flexibleLeftMargin, .flexibleWidth, .flexibleRightMargin, .flexibleTopMargin, .flexibleHeight, .flexibleBottomMargin]
+ }
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsButtons/MapsButtons.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsButtons/MapsButtons.xib
new file mode 100644
index 0000000..f2b068a
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsButtons/MapsButtons.xib
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.swift
new file mode 100644
index 0000000..aa59b2f
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.swift
@@ -0,0 +1,46 @@
+//
+// TripsDayEmptyView.swift
+// GTDriver
+//
+// Created by mrustaa on 16/01/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+
+class MapsWeatherView: XibView {
+
+ // MARK: - IBOutlets
+
+ @IBOutlet weak var mainView: DesignView!
+ var visualEffectView: UIVisualEffectView?
+ @IBOutlet weak var textLabel: UILabel!
+
+ override func loadedFromNib() {
+ backgroundColor = .clear
+ mainView.fillColor = .clear
+ }
+
+ public func addBlur(darkStyle: Bool) {
+ let style: UIBlurEffect.Style = darkStyle ? .systemThinMaterialDark : .systemChromeMaterialLight
+
+ textLabel.textColor = darkStyle ? .white : .black
+
+ mainView.fillColor = .clear
+
+ if visualEffectView == nil {
+ let blurView = UIVisualEffectView(effect: UIBlurEffect(style: style))
+ mainView.insertSubview(blurView, at: 0)
+ visualEffectView = blurView
+ }
+
+ visualEffectView?.effect = UIBlurEffect(style: style)
+ visualEffectView?.bounds = bounds
+ visualEffectView?.x = 0
+ visualEffectView?.y = 0
+ visualEffectView?.layer.cornerRadius = 6.0
+ visualEffectView?.layer.masksToBounds = true
+ visualEffectView?.autoresizingMask = [.flexibleLeftMargin, .flexibleWidth, .flexibleRightMargin, .flexibleTopMargin, .flexibleHeight, .flexibleBottomMargin]
+ }
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.xib
new file mode 100644
index 0000000..cd2fc72
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.xib
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.swift
new file mode 100644
index 0000000..75a7fd6
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.swift
@@ -0,0 +1,44 @@
+//
+// HeaderLocationDetailsView.swift
+// GTDriver
+//
+// Created by mrustaa on 16/01/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+
+
+class HeaderDetailsView: XibView {
+
+ var buttonCloseClickCallback: (() -> Void)?
+
+ // MARK: - IBOutlets
+
+ @IBOutlet public weak var separatorView: UIView?
+ @IBOutlet weak var separatorHeight: NSLayoutConstraint?
+
+ @IBOutlet weak var titleLabel: UILabel!
+ @IBOutlet weak var subtitle: UILabel!
+ @IBOutlet weak var textButton: UIButton!
+
+ override func loadedFromNib() {
+ separatorHeight?.constant = 0.5
+ separatorView?.alpha = 0.0
+
+ titleLabel.text = ""
+ subtitle.text = ""
+ textButton.setTitle("", for: .normal)
+ }
+
+ func add(darkStyle: Bool) {
+ titleLabel.textColor = darkStyle ? .white : .black
+ subtitle.textColor = darkStyle ? .white : .black
+ }
+
+ @IBAction func buttonCloseAction(_ sender: Any) {
+ buttonCloseClickCallback?()
+ }
+
+}
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.xib
new file mode 100644
index 0000000..c319839
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.xib
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.swift
new file mode 100644
index 0000000..691292d
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.swift
@@ -0,0 +1,76 @@
+//
+// HeaderSearchBarView.swift
+// GTDriver
+//
+// Created by mrustaa on 16/01/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+
+class HeaderSearchBarView: XibView {
+
+ var searchBarBeginEditingCallback: (() -> Void)?
+ var searchBarCancelButtonClickedCallback: (() -> Void)?
+
+ // MARK: - IBOutlets
+
+ @IBOutlet weak var searchBar: UISearchBar!
+
+ @IBOutlet public weak var separatorView: UIView?
+ @IBOutlet weak var separatorHeight: NSLayoutConstraint?
+
+ override func loadedFromNib() {
+ separatorHeight?.constant = 0.5
+ separatorView?.alpha = 0.0
+
+ searchBar.placeholder = _L("LNG_MAPS_SEARCH_PLACE_ADDRESS")
+
+ let textFieldInsideSearchBar = searchBar.value(forKey: "searchField") as? UITextField
+ let imageV = textFieldInsideSearchBar?.leftView as! UIImageView
+ imageV.image = imageV.image?.withRenderingMode(UIImage.RenderingMode.alwaysTemplate)
+// imageV.image = imageV.image?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)
+ imageV.tintColor = Colors.rgb(128, 128, 128)
+ }
+
+ func set(darkStyle: Bool) {
+
+ searchBar.keyboardAppearance = darkStyle ? .dark : .light
+
+ let textFieldInsideSearchBar = searchBar.value(forKey:"searchField") as? UITextField
+ textFieldInsideSearchBar?.textColor = darkStyle ? .white : .black
+ }
+
+}
+
+
+
+extension HeaderSearchBarView: UISearchBarDelegate {
+
+ func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
+ searchBar.setShowsCancelButton(true, animated: true)
+ searchBarBeginEditingCallback?()
+ }
+
+ func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
+// searchBar.setShowsCancelButton(false, animated: true)
+ }
+
+ func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
+ searchBar.setShowsCancelButton(false, animated: true)
+
+ searchBar.text = ""
+
+ searchBarCancelButtonClickedCallback?()
+ }
+
+ func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
+
+// guard let text = searchBar.text, !text.isEmpty else {
+// searchBar.setShowsCancelButton(false, animated: true)
+// return
+// }
+// searchBar.setShowsCancelButton(true, animated: true)
+ }
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.xib
new file mode 100644
index 0000000..3ba2ea7
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.xib
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.swift
new file mode 100644
index 0000000..9258367
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.swift
@@ -0,0 +1,49 @@
+//
+// MapsMenuHeader.swift
+// GTDriver
+//
+// Created by mrustaa on 16/01/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+
+class MapsMenuHeader: XibView {
+
+ var buttonCloseClickCallback: (() -> Void)?
+
+ // MARK: - IBOutlets
+
+ var darkStyle: Bool = false
+
+ @IBOutlet public weak var separatorView: UIView?
+ @IBOutlet weak var separatorHeight: NSLayoutConstraint?
+
+ @IBOutlet weak var titleLabel: UILabel!
+
+ func set(darkStyle: Bool) {
+ self.darkStyle = darkStyle
+ titleLabel.textColor = darkStyle ? .white : .black
+ }
+
+// required public init?(coder aDecoder: NSCoder) {
+// super.init(coder: aDecoder)
+// }
+
+ func add(darkStyle: Bool) {
+ titleLabel.textColor = darkStyle ? .white : .black
+ }
+
+ override func loadedFromNib() {
+ titleLabel.text = _L("LNG_MAPS_MENU_MAPS_SETTINGS")
+
+ separatorHeight?.constant = 0.5
+ separatorView?.alpha = 0.0
+
+ }
+ @IBAction func buttonCloseAction(_ sender: Any) {
+ buttonCloseClickCallback?()
+ }
+
+}
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.xib
new file mode 100644
index 0000000..767a239
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.xib
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.swift
new file mode 100644
index 0000000..6457e76
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.swift
@@ -0,0 +1,54 @@
+//
+// HeaderLocationDetailsView.swift
+// GTDriver
+//
+// Created by mrustaa on 16/01/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+
+
+class HeaderTabBarView: XibView {
+
+ var buttonCloseClickCallback: (() -> Void)?
+
+ // MARK: - IBOutlets
+
+ @IBOutlet weak var blurView: UIVisualEffectView?
+ @IBOutlet weak var tabbar: UITabBar!
+ @IBOutlet weak var separatorView: UIView!
+ @IBOutlet weak var separatorViewHeight: NSLayoutConstraint?
+ @IBOutlet weak var separatorViewY: NSLayoutConstraint?
+
+ @IBOutlet weak var tabBarItem1: UITabBarItem!
+ @IBOutlet weak var tabBarItem2: UITabBarItem!
+ @IBOutlet weak var tabBarItem3: UITabBarItem!
+ @IBOutlet weak var tabBarItem4: UITabBarItem!
+
+ func addBlur(darkStyle: Bool) {
+ let style: UIBlurEffect.Style = darkStyle ? .systemThinMaterialDark : .systemChromeMaterialLight
+ blurView?.effect = UIBlurEffect(style: style)
+ }
+
+ override func loadedFromNib() {
+ separatorViewY?.constant = 0.0
+ separatorViewHeight?.constant = 0.5
+
+ tabBarItem1.title = _L("LNG_MAPS_DRIVE")
+ tabBarItem2.title = _L("LNG_MAPS_WALK")
+ tabBarItem3.title = _L("LNG_MAPS_TRANSIT")
+ tabBarItem4.title = _L("LNG_MAPS_RIDE")
+
+ tabbar.selectedItem = tabbar.items![0]
+ tabbar.barTintColor = UIColor.clear
+ tabbar.backgroundImage = UIImage()
+ tabbar.shadowImage = UIImage()
+ }
+
+ @IBAction func buttonCloseAction(_ sender: Any) {
+ buttonCloseClickCallback?()
+ }
+
+}
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.xib
new file mode 100644
index 0000000..0fd3c7a
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.xib
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.swift b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.swift
new file mode 100644
index 0000000..d18c369
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.swift
@@ -0,0 +1,23 @@
+//
+// TripsDayEmptyView.swift
+// GTDriver
+//
+// Created by mrustaa on 16/01/2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+
+class TableHeaderSpinerView: XibView {
+
+ // MARK: - IBOutlets
+
+ @IBOutlet weak var spiner: UIActivityIndicatorView!
+ @IBOutlet weak var textLabel: UILabel!
+
+ override func loadedFromNib() {
+ textLabel.text = _L("LNG_MAPS_LOADING")
+ }
+
+
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.xib b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.xib
new file mode 100644
index 0000000..ef56352
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.xib
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Resources/Base.lproj/LaunchScreen.xib b/Examples/SwiftPM/ContainerController/ContainerController/Resources/Base.lproj/LaunchScreen.xib
new file mode 100644
index 0000000..55c6860
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Resources/Base.lproj/LaunchScreen.xib
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Resources/Base.lproj/Main.storyboard b/Examples/SwiftPM/ContainerController/ContainerController/Resources/Base.lproj/Main.storyboard
new file mode 100644
index 0000000..7a30301
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Resources/Base.lproj/Main.storyboard
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/Resources/Info.plist b/Examples/SwiftPM/ContainerController/ContainerController/Resources/Info.plist
new file mode 100644
index 0000000..dd3c9af
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/Resources/Info.plist
@@ -0,0 +1,25 @@
+
+
+
+
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+ UISceneConfigurations
+
+ UIWindowSceneSessionRoleApplication
+
+
+ UISceneConfigurationName
+ Default Configuration
+ UISceneDelegateClassName
+ $(PRODUCT_MODULE_NAME).SceneDelegate
+ UISceneStoryboardFile
+ Main
+
+
+
+
+
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/SceneDelegate.swift b/Examples/SwiftPM/ContainerController/ContainerController/SceneDelegate.swift
new file mode 100644
index 0000000..232bf71
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/SceneDelegate.swift
@@ -0,0 +1,53 @@
+//
+// SceneDelegate.swift
+// dwadwa
+//
+// Created by mrustaa on 09.06.2020.
+// Copyright © 2020 mrustaa. All rights reserved.
+//
+
+import UIKit
+
+class SceneDelegate: UIResponder, UIWindowSceneDelegate {
+
+ var window: UIWindow?
+
+
+ func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
+ // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
+ // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
+ // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
+ guard let _ = (scene as? UIWindowScene) else { return }
+ }
+
+ func sceneDidDisconnect(_ scene: UIScene) {
+ // Called as the scene is being released by the system.
+ // This occurs shortly after the scene enters the background, or when its session is discarded.
+ // Release any resources associated with this scene that can be re-created the next time the scene connects.
+ // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).
+ }
+
+ func sceneDidBecomeActive(_ scene: UIScene) {
+ // Called when the scene has moved from an inactive state to an active state.
+ // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
+ }
+
+ func sceneWillResignActive(_ scene: UIScene) {
+ // Called when the scene will move from an active state to an inactive state.
+ // This may occur due to temporary interruptions (ex. an incoming phone call).
+ }
+
+ func sceneWillEnterForeground(_ scene: UIScene) {
+ // Called as the scene transitions from the background to the foreground.
+ // Use this method to undo the changes made on entering the background.
+ }
+
+ func sceneDidEnterBackground(_ scene: UIScene) {
+ // Called as the scene transitions from the foreground to the background.
+ // Use this method to save data, release shared resources, and store enough scene-specific state information
+ // to restore the scene back to its current state.
+ }
+
+
+}
+
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/ViewController.swift b/Examples/SwiftPM/ContainerController/ContainerController/ViewController.swift
new file mode 100644
index 0000000..b8bdef3
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController/ViewController.swift
@@ -0,0 +1,54 @@
+//
+// ViewController.swift
+// ContainerController
+//
+// Created by mrustaa on 12/05/2020.
+// Copyright © 2020 mrusta. All rights reserved.
+//
+
+import UIKit
+import ContainerController
+
+class ViewController: UIViewController {
+
+ @IBOutlet weak var tableView: TableAdapterView?
+ var items: [TableAdapterItem] = []
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ title = "ContainerController"
+
+ navigationController?.interactivePopGestureRecognizer?.delegate = self
+ navigationController?.interactivePopGestureRecognizer?.isEnabled = true
+
+ items = [
+ TitleTextItem(title: "Maps.app", clss: MapsViewController.self),
+ TitleTextItem(title: "Example. Settings", clss: ExamplesSettingsViewController.self),
+ TitleTextItem(title: "Example. Add UITableView", clss: ExampleAddTableViewController.self),
+ TitleTextItem(title: "Example. Add UICollectionView", clss: ExampleAddCollectionViewController.self)
+ ]
+
+ tableView?.set(items: items, animated: true)
+
+
+ tableView?.selectIndexCallback = { [weak self] (index: Int) in
+ guard let _self = self else { return }
+
+ guard let data = _self.tableView?.items[index].cellData as? TitleTextCellData else { return }
+ guard let storyboardClass = data.clss as? StoryboardController.Type else { return }
+ let vc = storyboardClass.instantiate()
+
+ _self.navigationController?.pushViewController(vc, animated: true)
+ }
+
+ }
+
+}
+
+extension ViewController: UIGestureRecognizerDelegate {
+
+ func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
+ return true
+ }
+}
diff --git a/Examples/SwiftPM/ContainerController/ContainerController/screenLandscape5.png b/Examples/SwiftPM/ContainerController/ContainerController/screenLandscape5.png
new file mode 100644
index 0000000..b7f4026
Binary files /dev/null and b/Examples/SwiftPM/ContainerController/ContainerController/screenLandscape5.png differ
diff --git a/Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/project.pbxproj b/Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..2efa9ef
--- /dev/null
+++ b/Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/project.pbxproj
@@ -0,0 +1,1314 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 56;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1A83AE162901220100E232F7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE152901220100E232F7 /* AppDelegate.swift */; };
+ 1A83AE182901220100E232F7 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE172901220100E232F7 /* SceneDelegate.swift */; };
+ 1A83AE1A2901220100E232F7 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE192901220100E232F7 /* ViewController.swift */; };
+ 1A83AE1D2901220100E232F7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE1B2901220100E232F7 /* Main.storyboard */; };
+ 1A83AECE290122F300E232F7 /* ExampleCollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE2D290122F200E232F7 /* ExampleCollectionCell.swift */; };
+ 1A83AECF290122F300E232F7 /* ExampleCollectionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE2E290122F200E232F7 /* ExampleCollectionCell.xib */; };
+ 1A83AED0290122F300E232F7 /* ExampleCellStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE30290122F200E232F7 /* ExampleCellStyle.swift */; };
+ 1A83AED1290122F300E232F7 /* ExampleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE31290122F200E232F7 /* ExampleCell.swift */; };
+ 1A83AED2290122F300E232F7 /* ExampleSegmentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE33290122F200E232F7 /* ExampleSegmentCell.swift */; };
+ 1A83AED3290122F300E232F7 /* ExampleSegmentCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE34290122F200E232F7 /* ExampleSegmentCell.xib */; };
+ 1A83AED4290122F300E232F7 /* ExampleSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE36290122F200E232F7 /* ExampleSwitchCell.swift */; };
+ 1A83AED5290122F300E232F7 /* ExampleSwitchCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE37290122F200E232F7 /* ExampleSwitchCell.xib */; };
+ 1A83AED6290122F300E232F7 /* TitleTextCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE39290122F200E232F7 /* TitleTextCell.xib */; };
+ 1A83AED7290122F300E232F7 /* TitleTextCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE3A290122F200E232F7 /* TitleTextCell.swift */; };
+ 1A83AED8290122F300E232F7 /* ExampleSliderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE3C290122F200E232F7 /* ExampleSliderCell.swift */; };
+ 1A83AED9290122F300E232F7 /* ExampleSliderCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE3D290122F200E232F7 /* ExampleSliderCell.xib */; };
+ 1A83AEDA290122F300E232F7 /* ExampleFooterButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE40290122F200E232F7 /* ExampleFooterButtonView.swift */; };
+ 1A83AEDB290122F300E232F7 /* ExampleFooterButtonView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE41290122F200E232F7 /* ExampleFooterButtonView.xib */; };
+ 1A83AEDC290122F300E232F7 /* headerShadow.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE43290122F200E232F7 /* headerShadow.png */; };
+ 1A83AEDD290122F300E232F7 /* ExampleHeaderGripView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE44290122F200E232F7 /* ExampleHeaderGripView.swift */; };
+ 1A83AEDE290122F300E232F7 /* ExampleHeaderGripView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE45290122F200E232F7 /* ExampleHeaderGripView.xib */; };
+ 1A83AEDF290122F300E232F7 /* ExamplesSettingsViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE46290122F200E232F7 /* ExamplesSettingsViewController.storyboard */; };
+ 1A83AEE0290122F300E232F7 /* ExamplesContainerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE48290122F200E232F7 /* ExamplesContainerController.swift */; };
+ 1A83AEE1290122F300E232F7 /* ExamplesContainerControllerScrollType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE49290122F200E232F7 /* ExamplesContainerControllerScrollType.swift */; };
+ 1A83AEE2290122F300E232F7 /* ExamplesScrollViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE4A290122F200E232F7 /* ExamplesScrollViews.swift */; };
+ 1A83AEE3290122F300E232F7 /* ExamplesSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE4B290122F200E232F7 /* ExamplesSettingsViewController.swift */; };
+ 1A83AEE4290122F300E232F7 /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE4E290122F200E232F7 /* Color.swift */; };
+ 1A83AEE5290122F300E232F7 /* UIView+Positioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE4F290122F200E232F7 /* UIView+Positioning.swift */; };
+ 1A83AEE6290122F300E232F7 /* StoryboardController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE51290122F200E232F7 /* StoryboardController.swift */; };
+ 1A83AEE7290122F300E232F7 /* XibView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE52290122F200E232F7 /* XibView.swift */; };
+ 1A83AEE8290122F300E232F7 /* DesignButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE54290122F200E232F7 /* DesignButton.swift */; };
+ 1A83AEE9290122F300E232F7 /* DesignView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE55290122F200E232F7 /* DesignView.swift */; };
+ 1A83AEEA290122F300E232F7 /* ExampleAddCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE57290122F300E232F7 /* ExampleAddCollectionViewController.swift */; };
+ 1A83AEEB290122F300E232F7 /* ExampleAddCollectionViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE58290122F300E232F7 /* ExampleAddCollectionViewController.storyboard */; };
+ 1A83AEEC290122F300E232F7 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE5A290122F300E232F7 /* Localizable.strings */; };
+ 1A83AEED290122F300E232F7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE5C290122F300E232F7 /* InfoPlist.strings */; };
+ 1A83AEEE290122F300E232F7 /* LocalizationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE5E290122F300E232F7 /* LocalizationManager.swift */; };
+ 1A83AEEF290122F300E232F7 /* LocalizeFuncs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE61290122F300E232F7 /* LocalizeFuncs.swift */; };
+ 1A83AEF0290122F300E232F7 /* MapsFavoriteCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE66290122F300E232F7 /* MapsFavoriteCell.swift */; };
+ 1A83AEF1290122F300E232F7 /* MapsFavoriteCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE67290122F300E232F7 /* MapsFavoriteCell.xib */; };
+ 1A83AEF2290122F300E232F7 /* MapsFavoritesCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE6B290122F300E232F7 /* MapsFavoritesCell.xib */; };
+ 1A83AEF3290122F300E232F7 /* MapsFavoritesCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE6C290122F300E232F7 /* MapsFavoritesCell.swift */; };
+ 1A83AEF4290122F300E232F7 /* MapsCollectionCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE6E290122F300E232F7 /* MapsCollectionCellView.swift */; };
+ 1A83AEF5290122F300E232F7 /* MapsCollectionsCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE6F290122F300E232F7 /* MapsCollectionsCell.xib */; };
+ 1A83AEF6290122F300E232F7 /* MapsCollectionsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE70290122F300E232F7 /* MapsCollectionsCell.swift */; };
+ 1A83AEF7290122F300E232F7 /* MapsLocationCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE72290122F300E232F7 /* MapsLocationCell.xib */; };
+ 1A83AEF8290122F300E232F7 /* MapsLocationCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE73290122F300E232F7 /* MapsLocationCell.swift */; };
+ 1A83AEF9290122F300E232F7 /* MapsSectionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE75290122F300E232F7 /* MapsSectionCell.xib */; };
+ 1A83AEFA290122F300E232F7 /* MapsSectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE76290122F300E232F7 /* MapsSectionCell.swift */; };
+ 1A83AEFB290122F300E232F7 /* MapsRouteCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE79290122F300E232F7 /* MapsRouteCell.xib */; };
+ 1A83AEFC290122F300E232F7 /* MapsRouteCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE7A290122F300E232F7 /* MapsRouteCell.swift */; };
+ 1A83AEFD290122F300E232F7 /* LocationCoordinateCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE7D290122F300E232F7 /* LocationCoordinateCell.xib */; };
+ 1A83AEFE290122F300E232F7 /* LocationCoordinateCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE7E290122F300E232F7 /* LocationCoordinateCell.swift */; };
+ 1A83AEFF290122F300E232F7 /* LocationAddressCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE80290122F300E232F7 /* LocationAddressCell.swift */; };
+ 1A83AF00290122F300E232F7 /* LocationAddressCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE81290122F300E232F7 /* LocationAddressCell.xib */; };
+ 1A83AF01290122F300E232F7 /* LocationCollectionsButtonCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE83290122F300E232F7 /* LocationCollectionsButtonCell.xib */; };
+ 1A83AF02290122F300E232F7 /* LocationCollectionsButtonCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE84290122F300E232F7 /* LocationCollectionsButtonCell.swift */; };
+ 1A83AF03290122F300E232F7 /* LocationButtonCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE86290122F300E232F7 /* LocationButtonCell.xib */; };
+ 1A83AF04290122F300E232F7 /* LocationButtonCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE87290122F300E232F7 /* LocationButtonCell.swift */; };
+ 1A83AF05290122F300E232F7 /* LocationTextCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE89290122F300E232F7 /* LocationTextCell.xib */; };
+ 1A83AF06290122F300E232F7 /* LocationTextCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE8A290122F300E232F7 /* LocationTextCell.swift */; };
+ 1A83AF07290122F300E232F7 /* MapsSearchCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE8D290122F300E232F7 /* MapsSearchCell.xib */; };
+ 1A83AF08290122F300E232F7 /* MapsSearchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE8E290122F300E232F7 /* MapsSearchCell.swift */; };
+ 1A83AF09290122F300E232F7 /* MapsMenuSpaceCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE91290122F300E232F7 /* MapsMenuSpaceCell.swift */; };
+ 1A83AF0A290122F300E232F7 /* MapsMenuSpaceCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE92290122F300E232F7 /* MapsMenuSpaceCell.xib */; };
+ 1A83AF0B290122F300E232F7 /* MapsMenuSegmentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE94290122F300E232F7 /* MapsMenuSegmentCell.swift */; };
+ 1A83AF0C290122F300E232F7 /* MapsMenuSegmentCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE95290122F300E232F7 /* MapsMenuSegmentCell.xib */; };
+ 1A83AF0D290122F300E232F7 /* MapsMenuTextCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE97290122F300E232F7 /* MapsMenuTextCell.xib */; };
+ 1A83AF0E290122F300E232F7 /* MapsMenuTextCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE98290122F300E232F7 /* MapsMenuTextCell.swift */; };
+ 1A83AF0F290122F300E232F7 /* HeaderDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE9C290122F300E232F7 /* HeaderDetailsView.swift */; };
+ 1A83AF10290122F300E232F7 /* HeaderDetailsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AE9D290122F300E232F7 /* HeaderDetailsView.xib */; };
+ 1A83AF11290122F300E232F7 /* HeaderSearchBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AE9F290122F300E232F7 /* HeaderSearchBarView.swift */; };
+ 1A83AF12290122F300E232F7 /* HeaderSearchBarView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AEA0290122F300E232F7 /* HeaderSearchBarView.xib */; };
+ 1A83AF13290122F300E232F7 /* TableHeaderSpinerView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AEA3290122F300E232F7 /* TableHeaderSpinerView.xib */; };
+ 1A83AF14290122F300E232F7 /* TableHeaderSpinerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEA4290122F300E232F7 /* TableHeaderSpinerView.swift */; };
+ 1A83AF15290122F300E232F7 /* HeaderTabBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEA6290122F300E232F7 /* HeaderTabBarView.swift */; };
+ 1A83AF16290122F300E232F7 /* HeaderTabBarView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AEA7290122F300E232F7 /* HeaderTabBarView.xib */; };
+ 1A83AF17290122F300E232F7 /* MapsMenuHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEAA290122F300E232F7 /* MapsMenuHeader.swift */; };
+ 1A83AF18290122F300E232F7 /* MapsMenuHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AEAB290122F300E232F7 /* MapsMenuHeader.xib */; };
+ 1A83AF19290122F300E232F7 /* MapsButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEAE290122F300E232F7 /* MapsButtons.swift */; };
+ 1A83AF1A290122F300E232F7 /* MapsButtons.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AEAF290122F300E232F7 /* MapsButtons.xib */; };
+ 1A83AF1B290122F300E232F7 /* MapsWeatherView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AEB1290122F300E232F7 /* MapsWeatherView.xib */; };
+ 1A83AF1C290122F300E232F7 /* MapsWeatherView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEB2290122F300E232F7 /* MapsWeatherView.swift */; };
+ 1A83AF1D290122F300E232F7 /* MapsViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AEB3290122F300E232F7 /* MapsViewController.storyboard */; };
+ 1A83AF1E290122F300E232F7 /* MapsRouteContainerLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEB6290122F300E232F7 /* MapsRouteContainerLayout.swift */; };
+ 1A83AF1F290122F300E232F7 /* MapsMenuContainerLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEB7290122F300E232F7 /* MapsMenuContainerLayout.swift */; };
+ 1A83AF20290122F300E232F7 /* MapsMainContainerLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEB8290122F300E232F7 /* MapsMainContainerLayout.swift */; };
+ 1A83AF21290122F300E232F7 /* MapsContainerLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEB9290122F300E232F7 /* MapsContainerLayout.swift */; };
+ 1A83AF22290122F300E232F7 /* MapsContainerControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEBC290122F300E232F7 /* MapsContainerControllerDelegate.swift */; };
+ 1A83AF23290122F300E232F7 /* MapsContainerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEBD290122F300E232F7 /* MapsContainerController.swift */; };
+ 1A83AF24290122F300E232F7 /* RouteContainerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEBF290122F300E232F7 /* RouteContainerController.swift */; };
+ 1A83AF25290122F300E232F7 /* RouteContainerControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEC0290122F300E232F7 /* RouteContainerControllerDelegate.swift */; };
+ 1A83AF26290122F300E232F7 /* LocationContainerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEC2290122F300E232F7 /* LocationContainerController.swift */; };
+ 1A83AF27290122F300E232F7 /* LocationContainerControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEC3290122F300E232F7 /* LocationContainerControllerDelegate.swift */; };
+ 1A83AF28290122F300E232F7 /* MenuContainerControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEC5290122F300E232F7 /* MenuContainerControllerDelegate.swift */; };
+ 1A83AF29290122F300E232F7 /* MenuContainerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEC6290122F300E232F7 /* MenuContainerController.swift */; };
+ 1A83AF2A290122F300E232F7 /* MapViewManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEC8290122F300E232F7 /* MapViewManager.swift */; };
+ 1A83AF2B290122F300E232F7 /* MapsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AEC9290122F300E232F7 /* MapsViewController.swift */; };
+ 1A83AF2C290122F300E232F7 /* ExampleAddTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AECB290122F300E232F7 /* ExampleAddTableViewController.swift */; };
+ 1A83AF2D290122F300E232F7 /* ExampleAddTableViewControllerSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A83AECC290122F300E232F7 /* ExampleAddTableViewControllerSettings.swift */; };
+ 1A83AF2E290122F300E232F7 /* ExampleAddTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AECD290122F300E232F7 /* ExampleAddTableViewController.storyboard */; };
+ 1A83AF322901236500E232F7 /* screenLandscape5.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AF302901236500E232F7 /* screenLandscape5.png */; };
+ 1A83AF332901236500E232F7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AF312901236500E232F7 /* Images.xcassets */; };
+ 1A83AF362901244F00E232F7 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A83AF342901244E00E232F7 /* LaunchScreen.xib */; };
+ 1A83AF3C2901252000E232F7 /* ContainerController in Frameworks */ = {isa = PBXBuildFile; productRef = 1A83AF3B2901252000E232F7 /* ContainerController */; settings = {ATTRIBUTES = (Required, ); }; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 1A83AE122901220100E232F7 /* ContainerController_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ContainerController_Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1A83AE152901220100E232F7 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 1A83AE172901220100E232F7 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; };
+ 1A83AE192901220100E232F7 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ 1A83AE1C2901220100E232F7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 1A83AE232901220300E232F7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 1A83AE2D290122F200E232F7 /* ExampleCollectionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleCollectionCell.swift; sourceTree = ""; };
+ 1A83AE2E290122F200E232F7 /* ExampleCollectionCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExampleCollectionCell.xib; sourceTree = ""; };
+ 1A83AE30290122F200E232F7 /* ExampleCellStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleCellStyle.swift; sourceTree = ""; };
+ 1A83AE31290122F200E232F7 /* ExampleCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleCell.swift; sourceTree = ""; };
+ 1A83AE33290122F200E232F7 /* ExampleSegmentCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleSegmentCell.swift; sourceTree = ""; };
+ 1A83AE34290122F200E232F7 /* ExampleSegmentCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExampleSegmentCell.xib; sourceTree = ""; };
+ 1A83AE36290122F200E232F7 /* ExampleSwitchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleSwitchCell.swift; sourceTree = ""; };
+ 1A83AE37290122F200E232F7 /* ExampleSwitchCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExampleSwitchCell.xib; sourceTree = ""; };
+ 1A83AE39290122F200E232F7 /* TitleTextCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TitleTextCell.xib; sourceTree = ""; };
+ 1A83AE3A290122F200E232F7 /* TitleTextCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TitleTextCell.swift; sourceTree = ""; };
+ 1A83AE3C290122F200E232F7 /* ExampleSliderCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleSliderCell.swift; sourceTree = ""; };
+ 1A83AE3D290122F200E232F7 /* ExampleSliderCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExampleSliderCell.xib; sourceTree = ""; };
+ 1A83AE40290122F200E232F7 /* ExampleFooterButtonView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleFooterButtonView.swift; sourceTree = ""; };
+ 1A83AE41290122F200E232F7 /* ExampleFooterButtonView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExampleFooterButtonView.xib; sourceTree = ""; };
+ 1A83AE43290122F200E232F7 /* headerShadow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = headerShadow.png; sourceTree = ""; };
+ 1A83AE44290122F200E232F7 /* ExampleHeaderGripView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleHeaderGripView.swift; sourceTree = ""; };
+ 1A83AE45290122F200E232F7 /* ExampleHeaderGripView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExampleHeaderGripView.xib; sourceTree = ""; };
+ 1A83AE46290122F200E232F7 /* ExamplesSettingsViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ExamplesSettingsViewController.storyboard; sourceTree = ""; };
+ 1A83AE48290122F200E232F7 /* ExamplesContainerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExamplesContainerController.swift; sourceTree = ""; };
+ 1A83AE49290122F200E232F7 /* ExamplesContainerControllerScrollType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExamplesContainerControllerScrollType.swift; sourceTree = ""; };
+ 1A83AE4A290122F200E232F7 /* ExamplesScrollViews.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExamplesScrollViews.swift; sourceTree = ""; };
+ 1A83AE4B290122F200E232F7 /* ExamplesSettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExamplesSettingsViewController.swift; sourceTree = ""; };
+ 1A83AE4E290122F200E232F7 /* Color.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Color.swift; sourceTree = ""; };
+ 1A83AE4F290122F200E232F7 /* UIView+Positioning.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Positioning.swift"; sourceTree = ""; };
+ 1A83AE51290122F200E232F7 /* StoryboardController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoryboardController.swift; sourceTree = ""; };
+ 1A83AE52290122F200E232F7 /* XibView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XibView.swift; sourceTree = ""; };
+ 1A83AE54290122F200E232F7 /* DesignButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DesignButton.swift; sourceTree = ""; };
+ 1A83AE55290122F200E232F7 /* DesignView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DesignView.swift; sourceTree = ""; };
+ 1A83AE57290122F300E232F7 /* ExampleAddCollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleAddCollectionViewController.swift; sourceTree = ""; };
+ 1A83AE58290122F300E232F7 /* ExampleAddCollectionViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ExampleAddCollectionViewController.storyboard; sourceTree = ""; };
+ 1A83AE5B290122F300E232F7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; };
+ 1A83AE5D290122F300E232F7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
+ 1A83AE5E290122F300E232F7 /* LocalizationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalizationManager.swift; sourceTree = ""; };
+ 1A83AE5F290122F300E232F7 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; };
+ 1A83AE60290122F300E232F7 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; };
+ 1A83AE61290122F300E232F7 /* LocalizeFuncs.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalizeFuncs.swift; sourceTree = ""; };
+ 1A83AE66290122F300E232F7 /* MapsFavoriteCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsFavoriteCell.swift; sourceTree = ""; };
+ 1A83AE67290122F300E232F7 /* MapsFavoriteCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsFavoriteCell.xib; sourceTree = ""; };
+ 1A83AE6B290122F300E232F7 /* MapsFavoritesCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsFavoritesCell.xib; sourceTree = ""; };
+ 1A83AE6C290122F300E232F7 /* MapsFavoritesCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsFavoritesCell.swift; sourceTree = ""; };
+ 1A83AE6E290122F300E232F7 /* MapsCollectionCellView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsCollectionCellView.swift; sourceTree = ""; };
+ 1A83AE6F290122F300E232F7 /* MapsCollectionsCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsCollectionsCell.xib; sourceTree = ""; };
+ 1A83AE70290122F300E232F7 /* MapsCollectionsCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsCollectionsCell.swift; sourceTree = ""; };
+ 1A83AE72290122F300E232F7 /* MapsLocationCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsLocationCell.xib; sourceTree = ""; };
+ 1A83AE73290122F300E232F7 /* MapsLocationCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsLocationCell.swift; sourceTree = ""; };
+ 1A83AE75290122F300E232F7 /* MapsSectionCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsSectionCell.xib; sourceTree = ""; };
+ 1A83AE76290122F300E232F7 /* MapsSectionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsSectionCell.swift; sourceTree = ""; };
+ 1A83AE79290122F300E232F7 /* MapsRouteCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsRouteCell.xib; sourceTree = ""; };
+ 1A83AE7A290122F300E232F7 /* MapsRouteCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsRouteCell.swift; sourceTree = ""; };
+ 1A83AE7D290122F300E232F7 /* LocationCoordinateCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LocationCoordinateCell.xib; sourceTree = ""; };
+ 1A83AE7E290122F300E232F7 /* LocationCoordinateCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationCoordinateCell.swift; sourceTree = ""; };
+ 1A83AE80290122F300E232F7 /* LocationAddressCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationAddressCell.swift; sourceTree = ""; };
+ 1A83AE81290122F300E232F7 /* LocationAddressCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LocationAddressCell.xib; sourceTree = ""; };
+ 1A83AE83290122F300E232F7 /* LocationCollectionsButtonCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LocationCollectionsButtonCell.xib; sourceTree = ""; };
+ 1A83AE84290122F300E232F7 /* LocationCollectionsButtonCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationCollectionsButtonCell.swift; sourceTree = ""; };
+ 1A83AE86290122F300E232F7 /* LocationButtonCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LocationButtonCell.xib; sourceTree = ""; };
+ 1A83AE87290122F300E232F7 /* LocationButtonCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationButtonCell.swift; sourceTree = ""; };
+ 1A83AE89290122F300E232F7 /* LocationTextCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LocationTextCell.xib; sourceTree = ""; };
+ 1A83AE8A290122F300E232F7 /* LocationTextCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationTextCell.swift; sourceTree = ""; };
+ 1A83AE8D290122F300E232F7 /* MapsSearchCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsSearchCell.xib; sourceTree = ""; };
+ 1A83AE8E290122F300E232F7 /* MapsSearchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsSearchCell.swift; sourceTree = ""; };
+ 1A83AE91290122F300E232F7 /* MapsMenuSpaceCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsMenuSpaceCell.swift; sourceTree = ""; };
+ 1A83AE92290122F300E232F7 /* MapsMenuSpaceCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsMenuSpaceCell.xib; sourceTree = ""; };
+ 1A83AE94290122F300E232F7 /* MapsMenuSegmentCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsMenuSegmentCell.swift; sourceTree = ""; };
+ 1A83AE95290122F300E232F7 /* MapsMenuSegmentCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsMenuSegmentCell.xib; sourceTree = ""; };
+ 1A83AE97290122F300E232F7 /* MapsMenuTextCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsMenuTextCell.xib; sourceTree = ""; };
+ 1A83AE98290122F300E232F7 /* MapsMenuTextCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsMenuTextCell.swift; sourceTree = ""; };
+ 1A83AE9C290122F300E232F7 /* HeaderDetailsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeaderDetailsView.swift; sourceTree = ""; };
+ 1A83AE9D290122F300E232F7 /* HeaderDetailsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HeaderDetailsView.xib; sourceTree = ""; };
+ 1A83AE9F290122F300E232F7 /* HeaderSearchBarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeaderSearchBarView.swift; sourceTree = ""; };
+ 1A83AEA0290122F300E232F7 /* HeaderSearchBarView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HeaderSearchBarView.xib; sourceTree = ""; };
+ 1A83AEA3290122F300E232F7 /* TableHeaderSpinerView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TableHeaderSpinerView.xib; sourceTree = ""; };
+ 1A83AEA4290122F300E232F7 /* TableHeaderSpinerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableHeaderSpinerView.swift; sourceTree = ""; };
+ 1A83AEA6290122F300E232F7 /* HeaderTabBarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeaderTabBarView.swift; sourceTree = ""; };
+ 1A83AEA7290122F300E232F7 /* HeaderTabBarView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HeaderTabBarView.xib; sourceTree = ""; };
+ 1A83AEAA290122F300E232F7 /* MapsMenuHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsMenuHeader.swift; sourceTree = ""; };
+ 1A83AEAB290122F300E232F7 /* MapsMenuHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsMenuHeader.xib; sourceTree = ""; };
+ 1A83AEAE290122F300E232F7 /* MapsButtons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsButtons.swift; sourceTree = ""; };
+ 1A83AEAF290122F300E232F7 /* MapsButtons.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsButtons.xib; sourceTree = ""; };
+ 1A83AEB1290122F300E232F7 /* MapsWeatherView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapsWeatherView.xib; sourceTree = ""; };
+ 1A83AEB2290122F300E232F7 /* MapsWeatherView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsWeatherView.swift; sourceTree = ""; };
+ 1A83AEB3290122F300E232F7 /* MapsViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = MapsViewController.storyboard; sourceTree = ""; };
+ 1A83AEB6290122F300E232F7 /* MapsRouteContainerLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsRouteContainerLayout.swift; sourceTree = ""; };
+ 1A83AEB7290122F300E232F7 /* MapsMenuContainerLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsMenuContainerLayout.swift; sourceTree = ""; };
+ 1A83AEB8290122F300E232F7 /* MapsMainContainerLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsMainContainerLayout.swift; sourceTree = ""; };
+ 1A83AEB9290122F300E232F7 /* MapsContainerLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsContainerLayout.swift; sourceTree = ""; };
+ 1A83AEBC290122F300E232F7 /* MapsContainerControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsContainerControllerDelegate.swift; sourceTree = ""; };
+ 1A83AEBD290122F300E232F7 /* MapsContainerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsContainerController.swift; sourceTree = ""; };
+ 1A83AEBF290122F300E232F7 /* RouteContainerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RouteContainerController.swift; sourceTree = ""; };
+ 1A83AEC0290122F300E232F7 /* RouteContainerControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RouteContainerControllerDelegate.swift; sourceTree = ""; };
+ 1A83AEC2290122F300E232F7 /* LocationContainerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationContainerController.swift; sourceTree = ""; };
+ 1A83AEC3290122F300E232F7 /* LocationContainerControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationContainerControllerDelegate.swift; sourceTree = ""; };
+ 1A83AEC5290122F300E232F7 /* MenuContainerControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuContainerControllerDelegate.swift; sourceTree = ""; };
+ 1A83AEC6290122F300E232F7 /* MenuContainerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuContainerController.swift; sourceTree = ""; };
+ 1A83AEC8290122F300E232F7 /* MapViewManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapViewManager.swift; sourceTree = ""; };
+ 1A83AEC9290122F300E232F7 /* MapsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapsViewController.swift; sourceTree = ""; };
+ 1A83AECB290122F300E232F7 /* ExampleAddTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleAddTableViewController.swift; sourceTree = ""; };
+ 1A83AECC290122F300E232F7 /* ExampleAddTableViewControllerSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleAddTableViewControllerSettings.swift; sourceTree = ""; };
+ 1A83AECD290122F300E232F7 /* ExampleAddTableViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ExampleAddTableViewController.storyboard; sourceTree = ""; };
+ 1A83AF302901236500E232F7 /* screenLandscape5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = screenLandscape5.png; path = ContainerController/screenLandscape5.png; sourceTree = SOURCE_ROOT; };
+ 1A83AF312901236500E232F7 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ContainerController/Images.xcassets; sourceTree = SOURCE_ROOT; };
+ 1A83AF352901244E00E232F7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; };
+ 1A83AF38290124AF00E232F7 /* .. */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = ..; path = ../../..; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 1A83AE0F2901220100E232F7 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1A83AF3C2901252000E232F7 /* ContainerController in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 1A83AE092901220100E232F7 = {
+ isa = PBXGroup;
+ children = (
+ 1A83AE142901220100E232F7 /* ContainerController */,
+ 1A83AE132901220100E232F7 /* Products */,
+ 1A83AF37290124AF00E232F7 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 1A83AE132901220100E232F7 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 1A83AE122901220100E232F7 /* ContainerController_Example.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 1A83AE142901220100E232F7 /* ContainerController */ = {
+ isa = PBXGroup;
+ children = (
+ 1A83AE152901220100E232F7 /* AppDelegate.swift */,
+ 1A83AE172901220100E232F7 /* SceneDelegate.swift */,
+ 1A83AE192901220100E232F7 /* ViewController.swift */,
+ 1A83AE56290122F300E232F7 /* ExampleAddCollectionView */,
+ 1A83AECA290122F300E232F7 /* ExamplesAddTableView */,
+ 1A83AE29290122F200E232F7 /* ExamplesSettings */,
+ 1A83AE4C290122F200E232F7 /* Framework */,
+ 1A83AE59290122F300E232F7 /* Localization */,
+ 1A83AE62290122F300E232F7 /* Maps */,
+ 1A83AF2F2901230300E232F7 /* Resources */,
+ );
+ path = ContainerController;
+ sourceTree = "";
+ };
+ 1A83AE29290122F200E232F7 /* ExamplesSettings */ = {
+ isa = PBXGroup;
+ children = (
+ 1A83AE2A290122F200E232F7 /* UI */,
+ 1A83AE46290122F200E232F7 /* ExamplesSettingsViewController.storyboard */,
+ 1A83AE47290122F200E232F7 /* Container */,
+ 1A83AE4B290122F200E232F7 /* ExamplesSettingsViewController.swift */,
+ );
+ path = ExamplesSettings;
+ sourceTree = "";
+ };
+ 1A83AE2A290122F200E232F7 /* UI */ = {
+ isa = PBXGroup;
+ children = (
+ 1A83AE2B290122F200E232F7 /* CollectionCell */,
+ 1A83AE2F290122F200E232F7 /* Cell */,
+ 1A83AE3E290122F200E232F7 /* View */,
+ );
+ path = UI;
+ sourceTree = "