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 = ""; + }; + 1A83AE2B290122F200E232F7 /* CollectionCell */ = { + isa = PBXGroup; + children = ( + 1A83AE2C290122F200E232F7 /* ExampleCollectionCell */, + ); + path = CollectionCell; + sourceTree = ""; + }; + 1A83AE2C290122F200E232F7 /* ExampleCollectionCell */ = { + isa = PBXGroup; + children = ( + 1A83AE2D290122F200E232F7 /* ExampleCollectionCell.swift */, + 1A83AE2E290122F200E232F7 /* ExampleCollectionCell.xib */, + ); + path = ExampleCollectionCell; + sourceTree = ""; + }; + 1A83AE2F290122F200E232F7 /* Cell */ = { + isa = PBXGroup; + children = ( + 1A83AE30290122F200E232F7 /* ExampleCellStyle.swift */, + 1A83AE31290122F200E232F7 /* ExampleCell.swift */, + 1A83AE32290122F200E232F7 /* ExampleSegmentCell */, + 1A83AE35290122F200E232F7 /* ExampleSwitchCell */, + 1A83AE38290122F200E232F7 /* TitleTextCell */, + 1A83AE3B290122F200E232F7 /* ExampleSliderCell */, + ); + path = Cell; + sourceTree = ""; + }; + 1A83AE32290122F200E232F7 /* ExampleSegmentCell */ = { + isa = PBXGroup; + children = ( + 1A83AE33290122F200E232F7 /* ExampleSegmentCell.swift */, + 1A83AE34290122F200E232F7 /* ExampleSegmentCell.xib */, + ); + path = ExampleSegmentCell; + sourceTree = ""; + }; + 1A83AE35290122F200E232F7 /* ExampleSwitchCell */ = { + isa = PBXGroup; + children = ( + 1A83AE36290122F200E232F7 /* ExampleSwitchCell.swift */, + 1A83AE37290122F200E232F7 /* ExampleSwitchCell.xib */, + ); + path = ExampleSwitchCell; + sourceTree = ""; + }; + 1A83AE38290122F200E232F7 /* TitleTextCell */ = { + isa = PBXGroup; + children = ( + 1A83AE39290122F200E232F7 /* TitleTextCell.xib */, + 1A83AE3A290122F200E232F7 /* TitleTextCell.swift */, + ); + path = TitleTextCell; + sourceTree = ""; + }; + 1A83AE3B290122F200E232F7 /* ExampleSliderCell */ = { + isa = PBXGroup; + children = ( + 1A83AE3C290122F200E232F7 /* ExampleSliderCell.swift */, + 1A83AE3D290122F200E232F7 /* ExampleSliderCell.xib */, + ); + path = ExampleSliderCell; + sourceTree = ""; + }; + 1A83AE3E290122F200E232F7 /* View */ = { + isa = PBXGroup; + children = ( + 1A83AE3F290122F200E232F7 /* ExampleFooterButtonView */, + 1A83AE42290122F200E232F7 /* ExampleHeaderGripView */, + ); + path = View; + sourceTree = ""; + }; + 1A83AE3F290122F200E232F7 /* ExampleFooterButtonView */ = { + isa = PBXGroup; + children = ( + 1A83AE40290122F200E232F7 /* ExampleFooterButtonView.swift */, + 1A83AE41290122F200E232F7 /* ExampleFooterButtonView.xib */, + ); + path = ExampleFooterButtonView; + sourceTree = ""; + }; + 1A83AE42290122F200E232F7 /* ExampleHeaderGripView */ = { + isa = PBXGroup; + children = ( + 1A83AE43290122F200E232F7 /* headerShadow.png */, + 1A83AE44290122F200E232F7 /* ExampleHeaderGripView.swift */, + 1A83AE45290122F200E232F7 /* ExampleHeaderGripView.xib */, + ); + path = ExampleHeaderGripView; + sourceTree = ""; + }; + 1A83AE47290122F200E232F7 /* Container */ = { + isa = PBXGroup; + children = ( + 1A83AE48290122F200E232F7 /* ExamplesContainerController.swift */, + 1A83AE49290122F200E232F7 /* ExamplesContainerControllerScrollType.swift */, + 1A83AE4A290122F200E232F7 /* ExamplesScrollViews.swift */, + ); + path = Container; + sourceTree = ""; + }; + 1A83AE4C290122F200E232F7 /* Framework */ = { + isa = PBXGroup; + children = ( + 1A83AE4D290122F200E232F7 /* Utils */, + 1A83AE50290122F200E232F7 /* LoadNib */, + 1A83AE53290122F200E232F7 /* DesignableViews */, + ); + path = Framework; + sourceTree = ""; + }; + 1A83AE4D290122F200E232F7 /* Utils */ = { + isa = PBXGroup; + children = ( + 1A83AE4E290122F200E232F7 /* Color.swift */, + 1A83AE4F290122F200E232F7 /* UIView+Positioning.swift */, + ); + path = Utils; + sourceTree = ""; + }; + 1A83AE50290122F200E232F7 /* LoadNib */ = { + isa = PBXGroup; + children = ( + 1A83AE51290122F200E232F7 /* StoryboardController.swift */, + 1A83AE52290122F200E232F7 /* XibView.swift */, + ); + path = LoadNib; + sourceTree = ""; + }; + 1A83AE53290122F200E232F7 /* DesignableViews */ = { + isa = PBXGroup; + children = ( + 1A83AE54290122F200E232F7 /* DesignButton.swift */, + 1A83AE55290122F200E232F7 /* DesignView.swift */, + ); + path = DesignableViews; + sourceTree = ""; + }; + 1A83AE56290122F300E232F7 /* ExampleAddCollectionView */ = { + isa = PBXGroup; + children = ( + 1A83AE57290122F300E232F7 /* ExampleAddCollectionViewController.swift */, + 1A83AE58290122F300E232F7 /* ExampleAddCollectionViewController.storyboard */, + ); + path = ExampleAddCollectionView; + sourceTree = ""; + }; + 1A83AE59290122F300E232F7 /* Localization */ = { + isa = PBXGroup; + children = ( + 1A83AE5A290122F300E232F7 /* Localizable.strings */, + 1A83AE5C290122F300E232F7 /* InfoPlist.strings */, + 1A83AE5E290122F300E232F7 /* LocalizationManager.swift */, + 1A83AE61290122F300E232F7 /* LocalizeFuncs.swift */, + ); + path = Localization; + sourceTree = ""; + }; + 1A83AE62290122F300E232F7 /* Maps */ = { + isa = PBXGroup; + children = ( + 1A83AE63290122F300E232F7 /* UI */, + 1A83AEB3290122F300E232F7 /* MapsViewController.storyboard */, + 1A83AEB4290122F300E232F7 /* Container */, + 1A83AEC7290122F300E232F7 /* MapManager */, + 1A83AEC9290122F300E232F7 /* MapsViewController.swift */, + ); + path = Maps; + sourceTree = ""; + }; + 1A83AE63290122F300E232F7 /* UI */ = { + isa = PBXGroup; + children = ( + 1A83AE64290122F300E232F7 /* CollectionCell */, + 1A83AE68290122F300E232F7 /* Cell */, + 1A83AE99290122F300E232F7 /* View */, + ); + path = UI; + sourceTree = ""; + }; + 1A83AE64290122F300E232F7 /* CollectionCell */ = { + isa = PBXGroup; + children = ( + 1A83AE65290122F300E232F7 /* MapsFavoriteCell */, + ); + path = CollectionCell; + sourceTree = ""; + }; + 1A83AE65290122F300E232F7 /* MapsFavoriteCell */ = { + isa = PBXGroup; + children = ( + 1A83AE66290122F300E232F7 /* MapsFavoriteCell.swift */, + 1A83AE67290122F300E232F7 /* MapsFavoriteCell.xib */, + ); + path = MapsFavoriteCell; + sourceTree = ""; + }; + 1A83AE68290122F300E232F7 /* Cell */ = { + isa = PBXGroup; + children = ( + 1A83AE69290122F300E232F7 /* Maps */, + 1A83AE77290122F300E232F7 /* Route */, + 1A83AE7B290122F300E232F7 /* LocationDetails */, + 1A83AE8B290122F300E232F7 /* Search */, + 1A83AE8F290122F300E232F7 /* Menu */, + ); + path = Cell; + sourceTree = ""; + }; + 1A83AE69290122F300E232F7 /* Maps */ = { + isa = PBXGroup; + children = ( + 1A83AE6A290122F300E232F7 /* MapsFavoritesCell */, + 1A83AE6D290122F300E232F7 /* MapsCollectionsCell */, + 1A83AE71290122F300E232F7 /* MapsLocationCell */, + 1A83AE74290122F300E232F7 /* MapsSectionCell */, + ); + path = Maps; + sourceTree = ""; + }; + 1A83AE6A290122F300E232F7 /* MapsFavoritesCell */ = { + isa = PBXGroup; + children = ( + 1A83AE6B290122F300E232F7 /* MapsFavoritesCell.xib */, + 1A83AE6C290122F300E232F7 /* MapsFavoritesCell.swift */, + ); + path = MapsFavoritesCell; + sourceTree = ""; + }; + 1A83AE6D290122F300E232F7 /* MapsCollectionsCell */ = { + isa = PBXGroup; + children = ( + 1A83AE6E290122F300E232F7 /* MapsCollectionCellView.swift */, + 1A83AE6F290122F300E232F7 /* MapsCollectionsCell.xib */, + 1A83AE70290122F300E232F7 /* MapsCollectionsCell.swift */, + ); + path = MapsCollectionsCell; + sourceTree = ""; + }; + 1A83AE71290122F300E232F7 /* MapsLocationCell */ = { + isa = PBXGroup; + children = ( + 1A83AE72290122F300E232F7 /* MapsLocationCell.xib */, + 1A83AE73290122F300E232F7 /* MapsLocationCell.swift */, + ); + path = MapsLocationCell; + sourceTree = ""; + }; + 1A83AE74290122F300E232F7 /* MapsSectionCell */ = { + isa = PBXGroup; + children = ( + 1A83AE75290122F300E232F7 /* MapsSectionCell.xib */, + 1A83AE76290122F300E232F7 /* MapsSectionCell.swift */, + ); + path = MapsSectionCell; + sourceTree = ""; + }; + 1A83AE77290122F300E232F7 /* Route */ = { + isa = PBXGroup; + children = ( + 1A83AE78290122F300E232F7 /* MapsRouteCell */, + ); + path = Route; + sourceTree = ""; + }; + 1A83AE78290122F300E232F7 /* MapsRouteCell */ = { + isa = PBXGroup; + children = ( + 1A83AE79290122F300E232F7 /* MapsRouteCell.xib */, + 1A83AE7A290122F300E232F7 /* MapsRouteCell.swift */, + ); + path = MapsRouteCell; + sourceTree = ""; + }; + 1A83AE7B290122F300E232F7 /* LocationDetails */ = { + isa = PBXGroup; + children = ( + 1A83AE7C290122F300E232F7 /* LocationCoordinateCell */, + 1A83AE7F290122F300E232F7 /* LocationAddressCell */, + 1A83AE82290122F300E232F7 /* LocationCollectionsButtonCell */, + 1A83AE85290122F300E232F7 /* LocationButtonCell */, + 1A83AE88290122F300E232F7 /* LocationTextCell */, + ); + path = LocationDetails; + sourceTree = ""; + }; + 1A83AE7C290122F300E232F7 /* LocationCoordinateCell */ = { + isa = PBXGroup; + children = ( + 1A83AE7D290122F300E232F7 /* LocationCoordinateCell.xib */, + 1A83AE7E290122F300E232F7 /* LocationCoordinateCell.swift */, + ); + path = LocationCoordinateCell; + sourceTree = ""; + }; + 1A83AE7F290122F300E232F7 /* LocationAddressCell */ = { + isa = PBXGroup; + children = ( + 1A83AE80290122F300E232F7 /* LocationAddressCell.swift */, + 1A83AE81290122F300E232F7 /* LocationAddressCell.xib */, + ); + path = LocationAddressCell; + sourceTree = ""; + }; + 1A83AE82290122F300E232F7 /* LocationCollectionsButtonCell */ = { + isa = PBXGroup; + children = ( + 1A83AE83290122F300E232F7 /* LocationCollectionsButtonCell.xib */, + 1A83AE84290122F300E232F7 /* LocationCollectionsButtonCell.swift */, + ); + path = LocationCollectionsButtonCell; + sourceTree = ""; + }; + 1A83AE85290122F300E232F7 /* LocationButtonCell */ = { + isa = PBXGroup; + children = ( + 1A83AE86290122F300E232F7 /* LocationButtonCell.xib */, + 1A83AE87290122F300E232F7 /* LocationButtonCell.swift */, + ); + path = LocationButtonCell; + sourceTree = ""; + }; + 1A83AE88290122F300E232F7 /* LocationTextCell */ = { + isa = PBXGroup; + children = ( + 1A83AE89290122F300E232F7 /* LocationTextCell.xib */, + 1A83AE8A290122F300E232F7 /* LocationTextCell.swift */, + ); + path = LocationTextCell; + sourceTree = ""; + }; + 1A83AE8B290122F300E232F7 /* Search */ = { + isa = PBXGroup; + children = ( + 1A83AE8C290122F300E232F7 /* MapsSearchCell */, + ); + path = Search; + sourceTree = ""; + }; + 1A83AE8C290122F300E232F7 /* MapsSearchCell */ = { + isa = PBXGroup; + children = ( + 1A83AE8D290122F300E232F7 /* MapsSearchCell.xib */, + 1A83AE8E290122F300E232F7 /* MapsSearchCell.swift */, + ); + path = MapsSearchCell; + sourceTree = ""; + }; + 1A83AE8F290122F300E232F7 /* Menu */ = { + isa = PBXGroup; + children = ( + 1A83AE90290122F300E232F7 /* MapsMenuSpaceCell */, + 1A83AE93290122F300E232F7 /* MapsMenuSegmentCell */, + 1A83AE96290122F300E232F7 /* MapsMenuTextCell */, + ); + path = Menu; + sourceTree = ""; + }; + 1A83AE90290122F300E232F7 /* MapsMenuSpaceCell */ = { + isa = PBXGroup; + children = ( + 1A83AE91290122F300E232F7 /* MapsMenuSpaceCell.swift */, + 1A83AE92290122F300E232F7 /* MapsMenuSpaceCell.xib */, + ); + path = MapsMenuSpaceCell; + sourceTree = ""; + }; + 1A83AE93290122F300E232F7 /* MapsMenuSegmentCell */ = { + isa = PBXGroup; + children = ( + 1A83AE94290122F300E232F7 /* MapsMenuSegmentCell.swift */, + 1A83AE95290122F300E232F7 /* MapsMenuSegmentCell.xib */, + ); + path = MapsMenuSegmentCell; + sourceTree = ""; + }; + 1A83AE96290122F300E232F7 /* MapsMenuTextCell */ = { + isa = PBXGroup; + children = ( + 1A83AE97290122F300E232F7 /* MapsMenuTextCell.xib */, + 1A83AE98290122F300E232F7 /* MapsMenuTextCell.swift */, + ); + path = MapsMenuTextCell; + sourceTree = ""; + }; + 1A83AE99290122F300E232F7 /* View */ = { + isa = PBXGroup; + children = ( + 1A83AE9A290122F300E232F7 /* Maps */, + 1A83AEA1290122F300E232F7 /* Route */, + 1A83AEA8290122F300E232F7 /* Menu */, + 1A83AEAC290122F300E232F7 /* Main */, + ); + path = View; + sourceTree = ""; + }; + 1A83AE9A290122F300E232F7 /* Maps */ = { + isa = PBXGroup; + children = ( + 1A83AE9B290122F300E232F7 /* HeaderDetailsView */, + 1A83AE9E290122F300E232F7 /* HeaderSearchBarView */, + ); + path = Maps; + sourceTree = ""; + }; + 1A83AE9B290122F300E232F7 /* HeaderDetailsView */ = { + isa = PBXGroup; + children = ( + 1A83AE9C290122F300E232F7 /* HeaderDetailsView.swift */, + 1A83AE9D290122F300E232F7 /* HeaderDetailsView.xib */, + ); + path = HeaderDetailsView; + sourceTree = ""; + }; + 1A83AE9E290122F300E232F7 /* HeaderSearchBarView */ = { + isa = PBXGroup; + children = ( + 1A83AE9F290122F300E232F7 /* HeaderSearchBarView.swift */, + 1A83AEA0290122F300E232F7 /* HeaderSearchBarView.xib */, + ); + path = HeaderSearchBarView; + sourceTree = ""; + }; + 1A83AEA1290122F300E232F7 /* Route */ = { + isa = PBXGroup; + children = ( + 1A83AEA2290122F300E232F7 /* TableHeaderSpinerView */, + 1A83AEA5290122F300E232F7 /* HeaderTabBarView */, + ); + path = Route; + sourceTree = ""; + }; + 1A83AEA2290122F300E232F7 /* TableHeaderSpinerView */ = { + isa = PBXGroup; + children = ( + 1A83AEA3290122F300E232F7 /* TableHeaderSpinerView.xib */, + 1A83AEA4290122F300E232F7 /* TableHeaderSpinerView.swift */, + ); + path = TableHeaderSpinerView; + sourceTree = ""; + }; + 1A83AEA5290122F300E232F7 /* HeaderTabBarView */ = { + isa = PBXGroup; + children = ( + 1A83AEA6290122F300E232F7 /* HeaderTabBarView.swift */, + 1A83AEA7290122F300E232F7 /* HeaderTabBarView.xib */, + ); + path = HeaderTabBarView; + sourceTree = ""; + }; + 1A83AEA8290122F300E232F7 /* Menu */ = { + isa = PBXGroup; + children = ( + 1A83AEA9290122F300E232F7 /* MapsMenuHeader */, + ); + path = Menu; + sourceTree = ""; + }; + 1A83AEA9290122F300E232F7 /* MapsMenuHeader */ = { + isa = PBXGroup; + children = ( + 1A83AEAA290122F300E232F7 /* MapsMenuHeader.swift */, + 1A83AEAB290122F300E232F7 /* MapsMenuHeader.xib */, + ); + path = MapsMenuHeader; + sourceTree = ""; + }; + 1A83AEAC290122F300E232F7 /* Main */ = { + isa = PBXGroup; + children = ( + 1A83AEAD290122F300E232F7 /* MapsButtons */, + 1A83AEB0290122F300E232F7 /* MapsWeatherView */, + ); + path = Main; + sourceTree = ""; + }; + 1A83AEAD290122F300E232F7 /* MapsButtons */ = { + isa = PBXGroup; + children = ( + 1A83AEAE290122F300E232F7 /* MapsButtons.swift */, + 1A83AEAF290122F300E232F7 /* MapsButtons.xib */, + ); + path = MapsButtons; + sourceTree = ""; + }; + 1A83AEB0290122F300E232F7 /* MapsWeatherView */ = { + isa = PBXGroup; + children = ( + 1A83AEB1290122F300E232F7 /* MapsWeatherView.xib */, + 1A83AEB2290122F300E232F7 /* MapsWeatherView.swift */, + ); + path = MapsWeatherView; + sourceTree = ""; + }; + 1A83AEB4290122F300E232F7 /* Container */ = { + isa = PBXGroup; + children = ( + 1A83AEB5290122F300E232F7 /* Layout */, + 1A83AEBA290122F300E232F7 /* Controller */, + ); + path = Container; + sourceTree = ""; + }; + 1A83AEB5290122F300E232F7 /* Layout */ = { + isa = PBXGroup; + children = ( + 1A83AEB6290122F300E232F7 /* MapsRouteContainerLayout.swift */, + 1A83AEB7290122F300E232F7 /* MapsMenuContainerLayout.swift */, + 1A83AEB8290122F300E232F7 /* MapsMainContainerLayout.swift */, + 1A83AEB9290122F300E232F7 /* MapsContainerLayout.swift */, + ); + path = Layout; + sourceTree = ""; + }; + 1A83AEBA290122F300E232F7 /* Controller */ = { + isa = PBXGroup; + children = ( + 1A83AEBB290122F300E232F7 /* Maps */, + 1A83AEBE290122F300E232F7 /* Route */, + 1A83AEC1290122F300E232F7 /* LocationDetails */, + 1A83AEC4290122F300E232F7 /* Menu */, + ); + path = Controller; + sourceTree = ""; + }; + 1A83AEBB290122F300E232F7 /* Maps */ = { + isa = PBXGroup; + children = ( + 1A83AEBC290122F300E232F7 /* MapsContainerControllerDelegate.swift */, + 1A83AEBD290122F300E232F7 /* MapsContainerController.swift */, + ); + path = Maps; + sourceTree = ""; + }; + 1A83AEBE290122F300E232F7 /* Route */ = { + isa = PBXGroup; + children = ( + 1A83AEBF290122F300E232F7 /* RouteContainerController.swift */, + 1A83AEC0290122F300E232F7 /* RouteContainerControllerDelegate.swift */, + ); + path = Route; + sourceTree = ""; + }; + 1A83AEC1290122F300E232F7 /* LocationDetails */ = { + isa = PBXGroup; + children = ( + 1A83AEC2290122F300E232F7 /* LocationContainerController.swift */, + 1A83AEC3290122F300E232F7 /* LocationContainerControllerDelegate.swift */, + ); + path = LocationDetails; + sourceTree = ""; + }; + 1A83AEC4290122F300E232F7 /* Menu */ = { + isa = PBXGroup; + children = ( + 1A83AEC5290122F300E232F7 /* MenuContainerControllerDelegate.swift */, + 1A83AEC6290122F300E232F7 /* MenuContainerController.swift */, + ); + path = Menu; + sourceTree = ""; + }; + 1A83AEC7290122F300E232F7 /* MapManager */ = { + isa = PBXGroup; + children = ( + 1A83AEC8290122F300E232F7 /* MapViewManager.swift */, + ); + path = MapManager; + sourceTree = ""; + }; + 1A83AECA290122F300E232F7 /* ExamplesAddTableView */ = { + isa = PBXGroup; + children = ( + 1A83AECB290122F300E232F7 /* ExampleAddTableViewController.swift */, + 1A83AECC290122F300E232F7 /* ExampleAddTableViewControllerSettings.swift */, + 1A83AECD290122F300E232F7 /* ExampleAddTableViewController.storyboard */, + ); + path = ExamplesAddTableView; + sourceTree = ""; + }; + 1A83AF2F2901230300E232F7 /* Resources */ = { + isa = PBXGroup; + children = ( + 1A83AF342901244E00E232F7 /* LaunchScreen.xib */, + 1A83AF312901236500E232F7 /* Images.xcassets */, + 1A83AF302901236500E232F7 /* screenLandscape5.png */, + 1A83AE232901220300E232F7 /* Info.plist */, + 1A83AE1B2901220100E232F7 /* Main.storyboard */, + ); + path = Resources; + sourceTree = ""; + }; + 1A83AF37290124AF00E232F7 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1A83AF38290124AF00E232F7 /* .. */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1A83AE112901220100E232F7 /* ContainerController_Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1A83AE262901220300E232F7 /* Build configuration list for PBXNativeTarget "ContainerController_Example" */; + buildPhases = ( + 1A83AE0E2901220100E232F7 /* Sources */, + 1A83AE0F2901220100E232F7 /* Frameworks */, + 1A83AE102901220100E232F7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ContainerController_Example; + packageProductDependencies = ( + 1A83AF3B2901252000E232F7 /* ContainerController */, + ); + productName = ContainerController; + productReference = 1A83AE122901220100E232F7 /* ContainerController_Example.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 1A83AE0A2901220100E232F7 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1400; + LastUpgradeCheck = 1400; + TargetAttributes = { + 1A83AE112901220100E232F7 = { + CreatedOnToolsVersion = 14.0.1; + }; + }; + }; + buildConfigurationList = 1A83AE0D2901220100E232F7 /* Build configuration list for PBXProject "ContainerController_Example" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ru, + ); + mainGroup = 1A83AE092901220100E232F7; + productRefGroup = 1A83AE132901220100E232F7 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1A83AE112901220100E232F7 /* ContainerController_Example */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1A83AE102901220100E232F7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A83AF1D290122F300E232F7 /* MapsViewController.storyboard in Resources */, + 1A83AED3290122F300E232F7 /* ExampleSegmentCell.xib in Resources */, + 1A83AF01290122F300E232F7 /* LocationCollectionsButtonCell.xib in Resources */, + 1A83AED5290122F300E232F7 /* ExampleSwitchCell.xib in Resources */, + 1A83AF2E290122F300E232F7 /* ExampleAddTableViewController.storyboard in Resources */, + 1A83AEEC290122F300E232F7 /* Localizable.strings in Resources */, + 1A83AF322901236500E232F7 /* screenLandscape5.png in Resources */, + 1A83AEED290122F300E232F7 /* InfoPlist.strings in Resources */, + 1A83AF10290122F300E232F7 /* HeaderDetailsView.xib in Resources */, + 1A83AF0D290122F300E232F7 /* MapsMenuTextCell.xib in Resources */, + 1A83AF13290122F300E232F7 /* TableHeaderSpinerView.xib in Resources */, + 1A83AF0C290122F300E232F7 /* MapsMenuSegmentCell.xib in Resources */, + 1A83AF18290122F300E232F7 /* MapsMenuHeader.xib in Resources */, + 1A83AEF7290122F300E232F7 /* MapsLocationCell.xib in Resources */, + 1A83AF0A290122F300E232F7 /* MapsMenuSpaceCell.xib in Resources */, + 1A83AF16290122F300E232F7 /* HeaderTabBarView.xib in Resources */, + 1A83AF1B290122F300E232F7 /* MapsWeatherView.xib in Resources */, + 1A83AEF1290122F300E232F7 /* MapsFavoriteCell.xib in Resources */, + 1A83AEF2290122F300E232F7 /* MapsFavoritesCell.xib in Resources */, + 1A83AEFB290122F300E232F7 /* MapsRouteCell.xib in Resources */, + 1A83AF362901244F00E232F7 /* LaunchScreen.xib in Resources */, + 1A83AF03290122F300E232F7 /* LocationButtonCell.xib in Resources */, + 1A83AED6290122F300E232F7 /* TitleTextCell.xib in Resources */, + 1A83AEF9290122F300E232F7 /* MapsSectionCell.xib in Resources */, + 1A83AED9290122F300E232F7 /* ExampleSliderCell.xib in Resources */, + 1A83AECF290122F300E232F7 /* ExampleCollectionCell.xib in Resources */, + 1A83AEDE290122F300E232F7 /* ExampleHeaderGripView.xib in Resources */, + 1A83AF1A290122F300E232F7 /* MapsButtons.xib in Resources */, + 1A83AEF5290122F300E232F7 /* MapsCollectionsCell.xib in Resources */, + 1A83AEFD290122F300E232F7 /* LocationCoordinateCell.xib in Resources */, + 1A83AF12290122F300E232F7 /* HeaderSearchBarView.xib in Resources */, + 1A83AF05290122F300E232F7 /* LocationTextCell.xib in Resources */, + 1A83AF332901236500E232F7 /* Images.xcassets in Resources */, + 1A83AEDB290122F300E232F7 /* ExampleFooterButtonView.xib in Resources */, + 1A83AEDC290122F300E232F7 /* headerShadow.png in Resources */, + 1A83AEEB290122F300E232F7 /* ExampleAddCollectionViewController.storyboard in Resources */, + 1A83AF00290122F300E232F7 /* LocationAddressCell.xib in Resources */, + 1A83AE1D2901220100E232F7 /* Main.storyboard in Resources */, + 1A83AF07290122F300E232F7 /* MapsSearchCell.xib in Resources */, + 1A83AEDF290122F300E232F7 /* ExamplesSettingsViewController.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1A83AE0E2901220100E232F7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A83AF02290122F300E232F7 /* LocationCollectionsButtonCell.swift in Sources */, + 1A83AEDD290122F300E232F7 /* ExampleHeaderGripView.swift in Sources */, + 1A83AEF6290122F300E232F7 /* MapsCollectionsCell.swift in Sources */, + 1A83AED4290122F300E232F7 /* ExampleSwitchCell.swift in Sources */, + 1A83AEE5290122F300E232F7 /* UIView+Positioning.swift in Sources */, + 1A83AF06290122F300E232F7 /* LocationTextCell.swift in Sources */, + 1A83AF21290122F300E232F7 /* MapsContainerLayout.swift in Sources */, + 1A83AF26290122F300E232F7 /* LocationContainerController.swift in Sources */, + 1A83AF2C290122F300E232F7 /* ExampleAddTableViewController.swift in Sources */, + 1A83AEE0290122F300E232F7 /* ExamplesContainerController.swift in Sources */, + 1A83AEE6290122F300E232F7 /* StoryboardController.swift in Sources */, + 1A83AED8290122F300E232F7 /* ExampleSliderCell.swift in Sources */, + 1A83AF15290122F300E232F7 /* HeaderTabBarView.swift in Sources */, + 1A83AEEF290122F300E232F7 /* LocalizeFuncs.swift in Sources */, + 1A83AF24290122F300E232F7 /* RouteContainerController.swift in Sources */, + 1A83AEF3290122F300E232F7 /* MapsFavoritesCell.swift in Sources */, + 1A83AF1C290122F300E232F7 /* MapsWeatherView.swift in Sources */, + 1A83AF0E290122F300E232F7 /* MapsMenuTextCell.swift in Sources */, + 1A83AEE4290122F300E232F7 /* Color.swift in Sources */, + 1A83AF2D290122F300E232F7 /* ExampleAddTableViewControllerSettings.swift in Sources */, + 1A83AEF0290122F300E232F7 /* MapsFavoriteCell.swift in Sources */, + 1A83AF2A290122F300E232F7 /* MapViewManager.swift in Sources */, + 1A83AF25290122F300E232F7 /* RouteContainerControllerDelegate.swift in Sources */, + 1A83AEFE290122F300E232F7 /* LocationCoordinateCell.swift in Sources */, + 1A83AED1290122F300E232F7 /* ExampleCell.swift in Sources */, + 1A83AEFA290122F300E232F7 /* MapsSectionCell.swift in Sources */, + 1A83AEDA290122F300E232F7 /* ExampleFooterButtonView.swift in Sources */, + 1A83AEFF290122F300E232F7 /* LocationAddressCell.swift in Sources */, + 1A83AEFC290122F300E232F7 /* MapsRouteCell.swift in Sources */, + 1A83AEF8290122F300E232F7 /* MapsLocationCell.swift in Sources */, + 1A83AEE2290122F300E232F7 /* ExamplesScrollViews.swift in Sources */, + 1A83AED2290122F300E232F7 /* ExampleSegmentCell.swift in Sources */, + 1A83AF23290122F300E232F7 /* MapsContainerController.swift in Sources */, + 1A83AF08290122F300E232F7 /* MapsSearchCell.swift in Sources */, + 1A83AF0F290122F300E232F7 /* HeaderDetailsView.swift in Sources */, + 1A83AF11290122F300E232F7 /* HeaderSearchBarView.swift in Sources */, + 1A83AE1A2901220100E232F7 /* ViewController.swift in Sources */, + 1A83AEF4290122F300E232F7 /* MapsCollectionCellView.swift in Sources */, + 1A83AF22290122F300E232F7 /* MapsContainerControllerDelegate.swift in Sources */, + 1A83AF1E290122F300E232F7 /* MapsRouteContainerLayout.swift in Sources */, + 1A83AF09290122F300E232F7 /* MapsMenuSpaceCell.swift in Sources */, + 1A83AEEA290122F300E232F7 /* ExampleAddCollectionViewController.swift in Sources */, + 1A83AF19290122F300E232F7 /* MapsButtons.swift in Sources */, + 1A83AF29290122F300E232F7 /* MenuContainerController.swift in Sources */, + 1A83AF28290122F300E232F7 /* MenuContainerControllerDelegate.swift in Sources */, + 1A83AE162901220100E232F7 /* AppDelegate.swift in Sources */, + 1A83AF17290122F300E232F7 /* MapsMenuHeader.swift in Sources */, + 1A83AED7290122F300E232F7 /* TitleTextCell.swift in Sources */, + 1A83AF1F290122F300E232F7 /* MapsMenuContainerLayout.swift in Sources */, + 1A83AF0B290122F300E232F7 /* MapsMenuSegmentCell.swift in Sources */, + 1A83AECE290122F300E232F7 /* ExampleCollectionCell.swift in Sources */, + 1A83AEEE290122F300E232F7 /* LocalizationManager.swift in Sources */, + 1A83AF14290122F300E232F7 /* TableHeaderSpinerView.swift in Sources */, + 1A83AF2B290122F300E232F7 /* MapsViewController.swift in Sources */, + 1A83AF04290122F300E232F7 /* LocationButtonCell.swift in Sources */, + 1A83AE182901220100E232F7 /* SceneDelegate.swift in Sources */, + 1A83AED0290122F300E232F7 /* ExampleCellStyle.swift in Sources */, + 1A83AF27290122F300E232F7 /* LocationContainerControllerDelegate.swift in Sources */, + 1A83AEE3290122F300E232F7 /* ExamplesSettingsViewController.swift in Sources */, + 1A83AEE9290122F300E232F7 /* DesignView.swift in Sources */, + 1A83AEE8290122F300E232F7 /* DesignButton.swift in Sources */, + 1A83AEE7290122F300E232F7 /* XibView.swift in Sources */, + 1A83AEE1290122F300E232F7 /* ExamplesContainerControllerScrollType.swift in Sources */, + 1A83AF20290122F300E232F7 /* MapsMainContainerLayout.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 1A83AE1B2901220100E232F7 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 1A83AE1C2901220100E232F7 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 1A83AE5A290122F300E232F7 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 1A83AE5B290122F300E232F7 /* en */, + 1A83AE5F290122F300E232F7 /* ru */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 1A83AE5C290122F300E232F7 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 1A83AE5D290122F300E232F7 /* en */, + 1A83AE60290122F300E232F7 /* ru */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 1A83AF342901244E00E232F7 /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 1A83AF352901244E00E232F7 /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 1A83AE242901220300E232F7 /* 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++20"; + 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 = ( + "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; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 1A83AE252901220300E232F7 /* 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++20"; + 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_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; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 1A83AE272901220300E232F7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = ContainerController/Resources/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.xib; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.ContainerController; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1A83AE282901220300E232F7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = ContainerController/Resources/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.xib; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.ContainerController; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1A83AE0D2901220100E232F7 /* Build configuration list for PBXProject "ContainerController_Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1A83AE242901220300E232F7 /* Debug */, + 1A83AE252901220300E232F7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1A83AE262901220300E232F7 /* Build configuration list for PBXNativeTarget "ContainerController_Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1A83AE272901220300E232F7 /* Debug */, + 1A83AE282901220300E232F7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCSwiftPackageProductDependency section */ + 1A83AF3B2901252000E232F7 /* ContainerController */ = { + isa = XCSwiftPackageProductDependency; + productName = ContainerController; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 1A83AE0A2901220100E232F7 /* Project object */; +} diff --git a/Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/xcshareddata/xcschemes/ContainerController.xcscheme b/Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/xcshareddata/xcschemes/ContainerController.xcscheme new file mode 100644 index 0000000..72465c9 --- /dev/null +++ b/Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/xcshareddata/xcschemes/ContainerController.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Package.swift b/Package.swift index cc70b09..9299aa5 100644 --- a/Package.swift +++ b/Package.swift @@ -1,31 +1,20 @@ -// swift-tools-version:5.2 -// The swift-tools-version declares the minimum version of Swift required to build this package. +// swift-tools-version:5.6 import PackageDescription let package = Package( name: "ContainerController", platforms: [ - .iOS(.v13), + .iOS(.v13), ], products: [ - // Products define the executables and libraries produced by a package, and make them visible to other packages. .library( name: "ContainerController", targets: ["ContainerController"]), ], - dependencies: [ - // Dependencies declare other packages that this package depends on. - // .package(url: /* package url */, from: "1.0.0"), - ], targets: [ - // Targets are the basic building blocks of a package. A target can define a module or a test suite. - // Targets can depend on other targets in this package, and on products in packages which this package depends on. .target( name: "ContainerController", - dependencies: []), - .testTarget( - name: "ContainerControllerTests", - dependencies: ["ContainerController"]), + dependencies: []) ] ) diff --git a/README.md b/README.md index 335d22b..576efea 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ Follow [this doc](https://developer.apple.com/documentation/swift_packages/addin ```swift import UIKit -import ContainerControllerSwift +import ContainerController class ViewController: UIViewController, ContainerControllerDelegate {