From dd4173474fe56df257cb518b82d2dea593cb8f14 Mon Sep 17 00:00:00 2001 From: DanBurkhardt Date: Thu, 20 Oct 2022 00:23:47 -0700 Subject: [PATCH 1/2] re-implemented swiftPM compatibility, fixed swiftPM workspace, created a new forked directory so SPM and Cocoapods examples can co-exist, updated the package name to reflect "ContainerController" without the Swift on the end (redundant), fully tested functioning with SPM, Cocoapods has some import issues, is WIP --- .../xcschemes/ContainerController.xcscheme | 77 + ...ift.podspec => ContainerController.podspec | 19 +- .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 0 ContainerControllerSwift.xcworkspace | Bin 972 -> 0 bytes Example/Podfile | 10 - Example/Podfile.lock | 16 - Example/Pods/Manifest.lock | 16 - Example/Pods/Pods.xcodeproj/project.pbxproj | 863 ----------- .../ContainerControllerSwift-dummy.m | 5 - .../ContainerControllerSwift.modulemap | 6 - ...-ContainerControllerSwift_Tests-Info.plist | 26 - ...ollerSwift_Tests-acknowledgements.markdown | 3 - ...ntrollerSwift_Tests-acknowledgements.plist | 29 - ...ods-ContainerControllerSwift_Tests-dummy.m | 5 - ...ntainerControllerSwift_Tests-frameworks.sh | 207 --- ...-ContainerControllerSwift_Tests-umbrella.h | 16 - ...tainerControllerSwift_Tests.debug.xcconfig | 9 - ...s-ContainerControllerSwift_Tests.modulemap | 6 - ...inerControllerSwift_Tests.release.xcconfig | 9 - .../ContainerController}/AppDelegate.swift | 2 +- .../Base.lproj/LaunchScreen.xib | 0 .../Base.lproj/Main.storyboard | 0 ...mpleAddCollectionViewController.storyboard | 0 .../ExampleAddCollectionViewController.swift | 4 +- .../ExampleAddTableViewController.storyboard | 0 .../ExampleAddTableViewController.swift | 4 +- ...xampleAddTableViewControllerSettings.swift | 4 +- .../ExamplesContainerController.swift | 2 +- ...xamplesContainerControllerScrollType.swift | 0 .../Container/ExamplesScrollViews.swift | 2 +- .../ExamplesSettingsViewController.storyboard | 0 .../ExamplesSettingsViewController.swift | 2 +- .../UI/Cell/ExampleCell.swift | 2 +- .../UI/Cell/ExampleCellStyle.swift | 2 +- .../ExampleSegmentCell.swift | 2 +- .../ExampleSegmentCell/ExampleSegmentCell.xib | 0 .../ExampleSliderCell/ExampleSliderCell.swift | 2 +- .../ExampleSliderCell/ExampleSliderCell.xib | 0 .../ExampleSwitchCell/ExampleSwitchCell.swift | 2 +- .../ExampleSwitchCell/ExampleSwitchCell.xib | 0 .../UI/Cell/TitleTextCell/TitleTextCell.swift | 2 +- .../UI/Cell/TitleTextCell/TitleTextCell.xib | 0 .../ExampleCollectionCell.swift | 2 +- .../ExampleCollectionCell.xib | 0 .../ExampleFooterButtonView.swift | 0 .../ExampleFooterButtonView.xib | 0 .../ExampleHeaderGripView.swift | 0 .../ExampleHeaderGripView.xib | 0 .../ExampleHeaderGripView/headerShadow.png | Bin .../DesignableViews/DesignButton.swift | 0 .../DesignableViews/DesignView.swift | 0 .../LoadNib/StoryboardController.swift | 0 .../Framework/LoadNib/XibView.swift | 0 .../Framework/Utils/Color.swift | 0 .../Framework/Utils/UIView+Positioning.swift | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/appIcon-1024.png | Bin .../AppIcon.appiconset/appIcon-20.png | Bin .../AppIcon.appiconset/appIcon-20@2x.png | Bin .../AppIcon.appiconset/appIcon-20@3x.png | Bin .../AppIcon.appiconset/appIcon-29.png | Bin .../AppIcon.appiconset/appIcon-29@2x.png | Bin .../AppIcon.appiconset/appIcon-29@3x.png | Bin .../AppIcon.appiconset/appIcon-40.png | Bin .../AppIcon.appiconset/appIcon-40@2x.png | Bin .../AppIcon.appiconset/appIcon-40@3x.png | Bin .../AppIcon.appiconset/appIcon-60@2x.png | Bin .../AppIcon.appiconset/appIcon-60@3x.png | Bin .../AppIcon.appiconset/appIcon-76.png | Bin .../AppIcon.appiconset/appIcon-76@2x.png | Bin .../AppIcon.appiconset/appIcon-83.5@2x.png | Bin .../Images.xcassets/Contents.json | 0 .../Cocoapods/ContainerController}/Info.plist | 0 .../Localization/LocalizationManager.swift | 0 .../Localization/LocalizeFuncs.swift | 0 .../Localization/en.lproj/InfoPlist.strings | 0 .../Localization/en.lproj/Localizable.strings | 0 .../Localization/ru.lproj/InfoPlist.strings | 0 .../Localization/ru.lproj/Localizable.strings | 0 .../LocationContainerController.swift | 2 +- .../LocationContainerControllerDelegate.swift | 2 +- .../Maps/MapsContainerController.swift | 2 +- .../MapsContainerControllerDelegate.swift | 2 +- .../Menu/MenuContainerController.swift | 2 +- .../MenuContainerControllerDelegate.swift | 2 +- .../Route/RouteContainerController.swift | 2 +- .../RouteContainerControllerDelegate.swift | 2 +- .../Layout/MapsContainerLayout.swift | 2 +- .../Layout/MapsMainContainerLayout.swift | 2 +- .../Layout/MapsMenuContainerLayout.swift | 2 +- .../Layout/MapsRouteContainerLayout.swift | 2 +- .../Maps/MapManager/MapViewManager.swift | 2 +- .../Maps/MapsViewController.storyboard | 0 .../Maps/MapsViewController.swift | 2 +- .../LocationAddressCell.swift | 2 +- .../LocationAddressCell.xib | 0 .../LocationButtonCell.swift | 2 +- .../LocationButtonCell/LocationButtonCell.xib | 0 .../LocationCollectionsButtonCell.swift | 2 +- .../LocationCollectionsButtonCell.xib | 0 .../LocationCoordinateCell.swift | 2 +- .../LocationCoordinateCell.xib | 0 .../LocationTextCell/LocationTextCell.swift | 2 +- .../LocationTextCell/LocationTextCell.xib | 0 .../MapsCollectionCellView.swift | 0 .../MapsCollectionsCell.swift | 2 +- .../MapsCollectionsCell.xib | 0 .../MapsFavoritesCell/MapsFavoritesCell.swift | 2 +- .../MapsFavoritesCell/MapsFavoritesCell.xib | 4 +- .../MapsLocationCell/MapsLocationCell.swift | 2 +- .../MapsLocationCell/MapsLocationCell.xib | 0 .../MapsSectionCell/MapsSectionCell.swift | 2 +- .../Maps/MapsSectionCell/MapsSectionCell.xib | 0 .../MapsMenuSegmentCell.swift | 2 +- .../MapsMenuSegmentCell.xib | 0 .../MapsMenuSpaceCell/MapsMenuSpaceCell.swift | 2 +- .../MapsMenuSpaceCell/MapsMenuSpaceCell.xib | 0 .../MapsMenuTextCell/MapsMenuTextCell.swift | 2 +- .../MapsMenuTextCell/MapsMenuTextCell.xib | 0 .../Route/MapsRouteCell/MapsRouteCell.swift | 2 +- .../Route/MapsRouteCell/MapsRouteCell.xib | 0 .../MapsSearchCell/MapsSearchCell.swift | 2 +- .../Search/MapsSearchCell/MapsSearchCell.xib | 0 .../MapsFavoriteCell/MapsFavoriteCell.swift | 2 +- .../MapsFavoriteCell/MapsFavoriteCell.xib | 0 .../View/Main/MapsButtons/MapsButtons.swift | 0 .../UI/View/Main/MapsButtons/MapsButtons.xib | 0 .../MapsWeatherView/MapsWeatherView.swift | 0 .../Main/MapsWeatherView/MapsWeatherView.xib | 0 .../HeaderDetailsView/HeaderDetailsView.swift | 0 .../HeaderDetailsView/HeaderDetailsView.xib | 0 .../HeaderSearchBarView.swift | 0 .../HeaderSearchBarView.xib | 0 .../Menu/MapsMenuHeader/MapsMenuHeader.swift | 0 .../Menu/MapsMenuHeader/MapsMenuHeader.xib | 0 .../HeaderTabBarView/HeaderTabBarView.swift | 0 .../HeaderTabBarView/HeaderTabBarView.xib | 0 .../TableHeaderSpinerView.swift | 0 .../TableHeaderSpinerView.xib | 0 .../ContainerController}/SceneDelegate.swift | 0 .../ContainerController}/ViewController.swift | 2 +- .../ContainerController}/screenLandscape5.png | Bin .../project.pbxproj | 75 +- .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../ContainerControllerSwift-Example.xcscheme | 0 .../contents.xcworkspacedata | 5 +- .../xcshareddata/IDEWorkspaceChecks.plist | 8 + Examples/Cocoapods/Podfile | 17 + Examples/Cocoapods/Podfile.lock | 16 + .../ContainerController.podspec.json | 14 +- Examples/Cocoapods/Pods/Manifest.lock | 16 + .../Pods/Pods.xcodeproj/project.pbxproj | 688 +++++++++ .../ContainerController-Info.plist | 2 +- .../ContainerController-dummy.m | 5 + .../ContainerController-prefix.pch | 0 .../ContainerController-umbrella.h | 4 +- .../ContainerController.debug.xcconfig | 7 +- .../ContainerController.modulemap | 6 + .../ContainerController.release.xcconfig | 7 +- ...ontainerControllerSwift_Example-Info.plist | 0 ...lerSwift_Example-acknowledgements.markdown | 2 +- ...rollerSwift_Example-acknowledgements.plist | 2 +- ...s-ContainerControllerSwift_Example-dummy.m | 0 ...ainerControllerSwift_Example-frameworks.sh | 99 +- ...ontainerControllerSwift_Example-umbrella.h | 0 ...inerControllerSwift_Example.debug.xcconfig | 11 +- ...ContainerControllerSwift_Example.modulemap | 0 ...erControllerSwift_Example.release.xcconfig | 11 +- .../ContainerController/AppDelegate.swift | 46 + ...mpleAddCollectionViewController.storyboard | 26 + .../ExampleAddCollectionViewController.swift | 116 ++ .../ExampleAddTableViewController.storyboard | 26 + .../ExampleAddTableViewController.swift | 92 ++ ...xampleAddTableViewControllerSettings.swift | 92 ++ .../ExamplesContainerController.swift | 273 ++++ ...xamplesContainerControllerScrollType.swift | 25 + .../Container/ExamplesScrollViews.swift | 138 ++ .../ExamplesSettingsViewController.storyboard | 48 + .../ExamplesSettingsViewController.swift | 124 ++ .../UI/Cell/ExampleCell.swift | 57 + .../UI/Cell/ExampleCellStyle.swift | 51 + .../ExampleSegmentCell.swift | 106 ++ .../ExampleSegmentCell/ExampleSegmentCell.xib | 53 + .../ExampleSliderCell/ExampleSliderCell.swift | 131 ++ .../ExampleSliderCell/ExampleSliderCell.xib | 59 + .../ExampleSwitchCell/ExampleSwitchCell.swift | 94 ++ .../ExampleSwitchCell/ExampleSwitchCell.xib | 52 + .../UI/Cell/TitleTextCell/TitleTextCell.swift | 117 ++ .../UI/Cell/TitleTextCell/TitleTextCell.xib | 66 + .../ExampleCollectionCell.swift | 91 ++ .../ExampleCollectionCell.xib | 65 + .../ExampleFooterButtonView.swift | 28 + .../ExampleFooterButtonView.xib | 72 + .../ExampleHeaderGripView.swift | 28 + .../ExampleHeaderGripView.xib | 68 + .../ExampleHeaderGripView/headerShadow.png | Bin 0 -> 17393 bytes .../DesignableViews/DesignButton.swift | 134 ++ .../DesignableViews/DesignView.swift | 73 + .../LoadNib/StoryboardController.swift | 31 + .../Framework/LoadNib/XibView.swift | 99 ++ .../Framework/Utils/Color.swift | 59 + .../Framework/Utils/UIView+Positioning.swift | 193 +++ .../AppIcon.appiconset/Contents.json | 116 ++ .../AppIcon.appiconset/appIcon-1024.png | Bin 0 -> 414061 bytes .../AppIcon.appiconset/appIcon-20.png | Bin 0 -> 1882 bytes .../AppIcon.appiconset/appIcon-20@2x.png | Bin 0 -> 3241 bytes .../AppIcon.appiconset/appIcon-20@3x.png | Bin 0 -> 5046 bytes .../AppIcon.appiconset/appIcon-29.png | Bin 0 -> 2430 bytes .../AppIcon.appiconset/appIcon-29@2x.png | Bin 0 -> 4882 bytes .../AppIcon.appiconset/appIcon-29@3x.png | Bin 0 -> 8428 bytes .../AppIcon.appiconset/appIcon-40.png | Bin 0 -> 3241 bytes .../AppIcon.appiconset/appIcon-40@2x.png | Bin 0 -> 7444 bytes .../AppIcon.appiconset/appIcon-40@3x.png | Bin 0 -> 13435 bytes .../AppIcon.appiconset/appIcon-60@2x.png | Bin 0 -> 13435 bytes .../AppIcon.appiconset/appIcon-60@3x.png | Bin 0 -> 25390 bytes .../AppIcon.appiconset/appIcon-76.png | Bin 0 -> 6957 bytes .../AppIcon.appiconset/appIcon-76@2x.png | Bin 0 -> 19599 bytes .../AppIcon.appiconset/appIcon-83.5@2x.png | Bin 0 -> 22407 bytes .../Images.xcassets/Contents.json | 6 + .../ContainerController/Info.plist | 5 + .../Localization/LocalizationManager.swift | 273 ++++ .../Localization/LocalizeFuncs.swift | 23 + .../Localization/en.lproj/InfoPlist.strings | 9 + .../Localization/en.lproj/Localizable.strings | 88 ++ .../Localization/ru.lproj/InfoPlist.strings | 10 + .../Localization/ru.lproj/Localizable.strings | 87 ++ .../LocationContainerController.swift | 141 ++ .../LocationContainerControllerDelegate.swift | 21 + .../Maps/MapsContainerController.swift | 206 +++ .../MapsContainerControllerDelegate.swift | 18 + .../Menu/MenuContainerController.swift | 126 ++ .../MenuContainerControllerDelegate.swift | 19 + .../Route/RouteContainerController.swift | 181 +++ .../RouteContainerControllerDelegate.swift | 19 + .../Layout/MapsContainerLayout.swift | 69 + .../Layout/MapsMainContainerLayout.swift | 29 + .../Layout/MapsMenuContainerLayout.swift | 36 + .../Layout/MapsRouteContainerLayout.swift | 29 + .../Maps/MapManager/MapViewManager.swift | 261 ++++ .../Maps/MapsViewController.storyboard | 85 ++ .../Maps/MapsViewController.swift | 437 ++++++ .../LocationAddressCell.swift | 85 ++ .../LocationAddressCell.xib | 68 + .../LocationButtonCell.swift | 127 ++ .../LocationButtonCell/LocationButtonCell.xib | 133 ++ .../LocationCollectionsButtonCell.swift | 58 + .../LocationCollectionsButtonCell.xib | 203 +++ .../LocationCoordinateCell.swift | 101 ++ .../LocationCoordinateCell.xib | 113 ++ .../LocationTextCell/LocationTextCell.swift | 83 ++ .../LocationTextCell/LocationTextCell.xib | 82 + .../MapsCollectionCellView.swift | 36 + .../MapsCollectionsCell.swift | 60 + .../MapsCollectionsCell.xib | 122 ++ .../MapsFavoritesCell/MapsFavoritesCell.swift | 98 ++ .../MapsFavoritesCell/MapsFavoritesCell.xib | 45 + .../MapsLocationCell/MapsLocationCell.swift | 108 ++ .../MapsLocationCell/MapsLocationCell.xib | 151 ++ .../MapsSectionCell/MapsSectionCell.swift | 72 + .../Maps/MapsSectionCell/MapsSectionCell.xib | 60 + .../MapsMenuSegmentCell.swift | 94 ++ .../MapsMenuSegmentCell.xib | 68 + .../MapsMenuSpaceCell/MapsMenuSpaceCell.swift | 65 + .../MapsMenuSpaceCell/MapsMenuSpaceCell.xib | 39 + .../MapsMenuTextCell/MapsMenuTextCell.swift | 94 ++ .../MapsMenuTextCell/MapsMenuTextCell.xib | 65 + .../Route/MapsRouteCell/MapsRouteCell.swift | 107 ++ .../Route/MapsRouteCell/MapsRouteCell.xib | 128 ++ .../MapsSearchCell/MapsSearchCell.swift | 95 ++ .../Search/MapsSearchCell/MapsSearchCell.xib | 113 ++ .../MapsFavoriteCell/MapsFavoriteCell.swift | 123 ++ .../MapsFavoriteCell/MapsFavoriteCell.xib | 90 ++ .../View/Main/MapsButtons/MapsButtons.swift | 69 + .../UI/View/Main/MapsButtons/MapsButtons.xib | 88 ++ .../MapsWeatherView/MapsWeatherView.swift | 46 + .../Main/MapsWeatherView/MapsWeatherView.xib | 52 + .../HeaderDetailsView/HeaderDetailsView.swift | 44 + .../HeaderDetailsView/HeaderDetailsView.xib | 144 ++ .../HeaderSearchBarView.swift | 76 + .../HeaderSearchBarView.xib | 69 + .../Menu/MapsMenuHeader/MapsMenuHeader.swift | 49 + .../Menu/MapsMenuHeader/MapsMenuHeader.xib | 95 ++ .../HeaderTabBarView/HeaderTabBarView.swift | 54 + .../HeaderTabBarView/HeaderTabBarView.xib | 92 ++ .../TableHeaderSpinerView.swift | 23 + .../TableHeaderSpinerView.xib | 54 + .../Resources/Base.lproj/LaunchScreen.xib | 42 + .../Resources/Base.lproj/Main.storyboard | 65 + .../ContainerController/Resources/Info.plist | 25 + .../ContainerController/SceneDelegate.swift | 53 + .../ContainerController/ViewController.swift | 54 + .../ContainerController/screenLandscape5.png | Bin 0 -> 521233 bytes .../project.pbxproj | 1314 +++++++++++++++++ .../xcschemes/ContainerController.xcscheme | 78 + Package.swift | 17 +- README.md | 2 +- 298 files changed, 11515 insertions(+), 1436 deletions(-) create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/ContainerController.xcscheme rename ContainerControllerSwift.podspec => ContainerController.podspec (73%) create mode 100644 ContainerController.xcworkspace/contents.xcworkspacedata rename {Example/ContainerControllerSwift.xcworkspace => ContainerController.xcworkspace}/xcshareddata/IDEWorkspaceChecks.plist (100%) delete mode 100644 ContainerControllerSwift.xcworkspace delete mode 100644 Example/Podfile delete mode 100644 Example/Podfile.lock delete mode 100644 Example/Pods/Manifest.lock delete mode 100644 Example/Pods/Pods.xcodeproj/project.pbxproj delete mode 100644 Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-dummy.m delete mode 100644 Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.modulemap delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-Info.plist delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-acknowledgements.markdown delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-acknowledgements.plist delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-dummy.m delete mode 100755 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-frameworks.sh delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests-umbrella.h delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.debug.xcconfig delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.modulemap delete mode 100644 Example/Pods/Target Support Files/Pods-ContainerControllerSwift_Tests/Pods-ContainerControllerSwift_Tests.release.xcconfig rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/AppDelegate.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Base.lproj/LaunchScreen.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Base.lproj/Main.storyboard (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExampleAddCollectionView/ExampleAddCollectionViewController.storyboard (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExampleAddCollectionView/ExampleAddCollectionViewController.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesAddTableView/ExampleAddTableViewController.storyboard (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesAddTableView/ExampleAddTableViewController.swift (97%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift (97%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/Container/ExamplesContainerController.swift (99%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/Container/ExamplesContainerControllerScrollType.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/Container/ExamplesScrollViews.swift (99%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/ExamplesSettingsViewController.storyboard (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/ExamplesSettingsViewController.swift (99%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/Cell/ExampleCell.swift (97%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/Cell/ExampleCellStyle.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift (99%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ExamplesSettings/UI/View/ExampleHeaderGripView/headerShadow.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Framework/DesignableViews/DesignButton.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Framework/DesignableViews/DesignView.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Framework/LoadNib/StoryboardController.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Framework/LoadNib/XibView.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Framework/Utils/Color.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Framework/Utils/UIView+Positioning.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/Contents.json (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-1024.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-20.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-20@2x.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-20@3x.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-29.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-29@2x.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-29@3x.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-40.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-40@2x.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-40@3x.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-60@2x.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-60@3x.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-76.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-76@2x.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/AppIcon.appiconset/appIcon-83.5@2x.png (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Images.xcassets/Contents.json (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Info.plist (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Localization/LocalizationManager.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Localization/LocalizeFuncs.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Localization/en.lproj/InfoPlist.strings (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Localization/en.lproj/Localizable.strings (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Localization/ru.lproj/InfoPlist.strings (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Localization/ru.lproj/Localizable.strings (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/Container/Controller/LocationDetails/LocationContainerController.swift (99%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/Container/Controller/LocationDetails/LocationContainerControllerDelegate.swift (95%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/Container/Controller/Maps/MapsContainerController.swift (99%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/Container/Controller/Maps/MapsContainerControllerDelegate.swift (93%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/Container/Controller/Menu/MenuContainerController.swift (99%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/Container/Controller/Menu/MenuContainerControllerDelegate.swift (94%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/Container/Controller/Route/RouteContainerController.swift (99%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/Container/Controller/Route/RouteContainerControllerDelegate.swift (94%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/Container/Layout/MapsContainerLayout.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/Container/Layout/MapsMainContainerLayout.swift (95%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/Container/Layout/MapsMenuContainerLayout.swift (96%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/Container/Layout/MapsRouteContainerLayout.swift (96%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/MapManager/MapViewManager.swift (99%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/MapsViewController.storyboard (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/MapsViewController.swift (99%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.swift (97%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionCellView.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.swift (97%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.swift (99%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.xib (97%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.swift (97%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.swift (97%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.swift (99%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Main/MapsButtons/MapsButtons.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Main/MapsButtons/MapsButtons.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.xib (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/SceneDelegate.swift (100%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/ViewController.swift (98%) rename {Example/ContainerControllerSwift => Examples/Cocoapods/ContainerController}/screenLandscape5.png (100%) rename {Example/ContainerControllerSwift.xcodeproj => Examples/Cocoapods/ContainerController_Example.xcodeproj}/project.pbxproj (95%) rename {Example/ContainerControllerSwift.xcodeproj => Examples/Cocoapods/ContainerController_Example.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (100%) create mode 100644 Examples/Cocoapods/ContainerController_Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename {Example/ContainerControllerSwift.xcodeproj => Examples/Cocoapods/ContainerController_Example.xcodeproj}/xcshareddata/xcschemes/ContainerControllerSwift-Example.xcscheme (100%) rename {Example/ContainerControllerSwift.xcworkspace => Examples/Cocoapods/ContainerController_Example.xcworkspace}/contents.xcworkspacedata (60%) create mode 100644 Examples/Cocoapods/ContainerController_Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Examples/Cocoapods/Podfile create mode 100644 Examples/Cocoapods/Podfile.lock rename Example/Pods/Local Podspecs/ContainerControllerSwift.podspec.json => Examples/Cocoapods/Pods/Local Podspecs/ContainerController.podspec.json (66%) create mode 100644 Examples/Cocoapods/Pods/Manifest.lock create mode 100644 Examples/Cocoapods/Pods/Pods.xcodeproj/project.pbxproj rename Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-Info.plist => Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-Info.plist (96%) create mode 100644 Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-dummy.m rename Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-prefix.pch => Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-prefix.pch (100%) rename Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift-umbrella.h => Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController-umbrella.h (57%) rename Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.debug.xcconfig => Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController.debug.xcconfig (60%) create mode 100644 Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController.modulemap rename Example/Pods/Target Support Files/ContainerControllerSwift/ContainerControllerSwift.release.xcconfig => Examples/Cocoapods/Pods/Target Support Files/ContainerController/ContainerController.release.xcconfig (60%) rename {Example => Examples/Cocoapods}/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-Info.plist (100%) rename {Example => Examples/Cocoapods}/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.markdown (97%) rename {Example => Examples/Cocoapods}/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-acknowledgements.plist (97%) rename {Example => Examples/Cocoapods}/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-dummy.m (100%) rename {Example => Examples/Cocoapods}/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-frameworks.sh (87%) rename {Example => Examples/Cocoapods}/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example-umbrella.h (100%) rename {Example => Examples/Cocoapods}/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.debug.xcconfig (50%) rename {Example => Examples/Cocoapods}/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.modulemap (100%) rename {Example => Examples/Cocoapods}/Pods/Target Support Files/Pods-ContainerControllerSwift_Example/Pods-ContainerControllerSwift_Example.release.xcconfig (50%) create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/AppDelegate.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExampleAddCollectionView/ExampleAddCollectionViewController.storyboard create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExampleAddCollectionView/ExampleAddCollectionViewController.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesAddTableView/ExampleAddTableViewController.storyboard create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesAddTableView/ExampleAddTableViewController.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesAddTableView/ExampleAddTableViewControllerSettings.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/Container/ExamplesContainerController.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/Container/ExamplesContainerControllerScrollType.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/Container/ExamplesScrollViews.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/ExamplesSettingsViewController.storyboard create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/ExamplesSettingsViewController.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleCellStyle.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSegmentCell/ExampleSegmentCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSliderCell/ExampleSliderCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/ExampleSwitchCell/ExampleSwitchCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/Cell/TitleTextCell/TitleTextCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/CollectionCell/ExampleCollectionCell/ExampleCollectionCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleFooterButtonView/ExampleFooterButtonView.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/headerShadow.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Framework/DesignableViews/DesignButton.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Framework/DesignableViews/DesignView.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Framework/LoadNib/StoryboardController.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Framework/LoadNib/XibView.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Framework/Utils/Color.swift create mode 100755 Examples/SwiftPM/ContainerController/ContainerController/Framework/Utils/UIView+Positioning.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-1024.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20@2x.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-20@3x.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29@2x.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-29@3x.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40@2x.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-40@3x.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-60@2x.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-60@3x.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-76.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-76@2x.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/AppIcon.appiconset/appIcon-83.5@2x.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Images.xcassets/Contents.json create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Info.plist create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Localization/LocalizationManager.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Localization/LocalizeFuncs.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Localization/en.lproj/InfoPlist.strings create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Localization/en.lproj/Localizable.strings create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Localization/ru.lproj/InfoPlist.strings create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Localization/ru.lproj/Localizable.strings create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerController.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/LocationDetails/LocationContainerControllerDelegate.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Maps/MapsContainerController.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Maps/MapsContainerControllerDelegate.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Menu/MenuContainerController.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Menu/MenuContainerControllerDelegate.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Route/RouteContainerController.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Controller/Route/RouteContainerControllerDelegate.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsContainerLayout.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsMainContainerLayout.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsMenuContainerLayout.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/Container/Layout/MapsRouteContainerLayout.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/MapManager/MapViewManager.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/MapsViewController.storyboard create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/MapsViewController.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationAddressCell/LocationAddressCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationButtonCell/LocationButtonCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCollectionsButtonCell/LocationCollectionsButtonCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationCoordinateCell/LocationCoordinateCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/LocationDetails/LocationTextCell/LocationTextCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionCellView.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsCollectionsCell/MapsCollectionsCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsFavoritesCell/MapsFavoritesCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsLocationCell/MapsLocationCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Maps/MapsSectionCell/MapsSectionCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSegmentCell/MapsMenuSegmentCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuSpaceCell/MapsMenuSpaceCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Menu/MapsMenuTextCell/MapsMenuTextCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Route/MapsRouteCell/MapsRouteCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/Cell/Search/MapsSearchCell/MapsSearchCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/CollectionCell/MapsFavoriteCell/MapsFavoriteCell.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsButtons/MapsButtons.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsButtons/MapsButtons.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Main/MapsWeatherView/MapsWeatherView.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderDetailsView/HeaderDetailsView.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Maps/HeaderSearchBarView/HeaderSearchBarView.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Menu/MapsMenuHeader/MapsMenuHeader.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/HeaderTabBarView/HeaderTabBarView.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Maps/UI/View/Route/TableHeaderSpinerView/TableHeaderSpinerView.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Resources/Base.lproj/LaunchScreen.xib create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Resources/Base.lproj/Main.storyboard create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/Resources/Info.plist create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/SceneDelegate.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/ViewController.swift create mode 100644 Examples/SwiftPM/ContainerController/ContainerController/screenLandscape5.png create mode 100644 Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/project.pbxproj create mode 100644 Examples/SwiftPM/ContainerController/ContainerController_Example.xcodeproj/xcshareddata/xcschemes/ContainerController.xcscheme 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 8f5a76bc0d918a2ca0fd30793042da75a0b936e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 972 zcmZ{iy>HWC5XR5_3<9ZXf}k4)bzpImG!2d0fu0ELrV*`#b`XNcBo4O2$Z8XfOI)?XR^<7V zmH3|5i7cmM2MmGdx^{3@TkBeF-?eG_|Fw^IoULf4+t~4fR_I#|dx~qZIB#5s^3W2r z4!KYY8o{2ozg+?i;_QowbFpzD?mfSW(+%p!chAQY607w;p!PHL9Xf{oKq++K_4&Rk zy@zlA)_<+V^|;FnkHc<&lb%__<*K{pO{g>Q7@Nxdmi`)!w&l3?LN1rPf;_*=1FPY5 zA}?&}^{Sdruk~hx{Mnv9?Z01JpzgHHDVEI29sG>KebY4N3WdC}T&$H1vskOno5j-X zY-wKY{~6DLe&At~o|)Ir!7no7e48C-0~pt_PugV(5>I*;wybKdqSwEEzt4Tyu0i~j z9>fv8L-3R&)8M-B61Xh<1ndj1BzP6vl<^^*=(fDYDEL6e)8IG4li(xa4EUpP7W_q6 u2dAV@9<2InheS`MW)h54Y?(u%JsH=&4(iij_1@Qio_@ -@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 100% rename from Example/ContainerControllerSwift/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib rename to Examples/Cocoapods/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.xib 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..4f841b7 --- /dev/null +++ b/Examples/SwiftPM/ContainerController/ContainerController/ExamplesSettings/UI/View/ExampleHeaderGripView/ExampleHeaderGripView.swift @@ -0,0 +1,28 @@ +// +// 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..98e9abd --- /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 0000000000000000000000000000000000000000..474c2be5794874fad04797aff0dba40c7a15a6ff GIT binary patch literal 17393 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 literal 0 HcmV?d00001 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..94fbfa2 --- /dev/null +++ b/Examples/SwiftPM/ContainerController/ContainerController/Framework/LoadNib/StoryboardController.swift @@ -0,0 +1,31 @@ +// +// StoryboardController.swift +// PatternsSwift +// +// Created by mrustaa on 20/04/2020. +// Copyright © 2020 mrustaa. All rights reserved. +// + +import UIKit + +@IBDesignable +class StoryboardController: UIViewController { + + class func instantiate() -> UIViewController { + return fromStoryboardController() + } + + class func fromStoryboardController() -> UIViewController { + let className = String(describing: self) + + let storyboard = UIStoryboard.init(name: className, bundle: nil) + +// if let initialViewController = storyboard.instantiateInitialViewController() { +// return initialViewController +// } else { +// fatalError("Can't initialize view controller \(self)") +// } + + return storyboard.instantiateViewController(withIdentifier: className) + } +} diff --git a/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..3d5f091 --- /dev/null +++ b/Examples/SwiftPM/ContainerController/ContainerController/Framework/Utils/UIView+Positioning.swift @@ -0,0 +1,193 @@ +// +// UIView+Positioning.swift +// +// Created by Shai Mishali on 1/19/15. +// Copyright (c) 2015 Shai Mishali. All rights reserved. +// + +import UIKit + +public extension UIView { + + // MARK: - Basic Properties + + /// X Axis value of UIView. + var x: CGFloat { + set { self.frame = CGRect(x: _pixelIntegral(newValue), + y: self.y, + width: self.width, + height: self.height) + } + get { return self.frame.origin.x } + } + + /// Y Axis value of UIView. + var y: CGFloat { + set { self.frame = CGRect(x: self.x, + y: _pixelIntegral(newValue), + width: self.width, + height: self.height) + } + get { return self.frame.origin.y } + } + + /// Width of view. + var width: CGFloat { + set { self.frame = CGRect(x: self.x, + y: self.y, + width: _pixelIntegral(newValue), + height: self.height) + } + get { return self.frame.size.width } + } + + /// Height of view. + var height: CGFloat { + set { self.frame = CGRect(x: self.x, + y: self.y, + width: self.width, + height: _pixelIntegral(newValue)) + } + get { return self.frame.size.height } + } + + // MARK: - Origin and Size + + /// View's Origin point. + var origin: CGPoint { + set { self.frame = CGRect(x: _pixelIntegral(newValue.x), + y: _pixelIntegral(newValue.y), + width: self.width, + height: self.height) + } + get { return self.frame.origin } + } + + /// View's size. + var size: CGSize { + set { self.frame = CGRect(x: self.x, + y: self.y, + width: _pixelIntegral(newValue.width), + height: _pixelIntegral(newValue.height)) + } + get { return self.frame.size } + } + + // MARK: - Extra Properties + + /// View's right side (x + width). + var right: CGFloat { + set { self.x = newValue - self.width } + get { return self.x + self.width } + } + + /// View's bottom (y + height). + var bottom: CGFloat { + set { self.y = newValue - self.height } + get { return self.y + self.height } + } + + /// View's top (y). + var top: CGFloat { + set { self.y = newValue } + get { return self.y } + } + + /// View's left side (x). + var left: CGFloat { + set { self.x = newValue } + get { return self.x } + } + + /// View's center X value (center.x). + var centerX: CGFloat { + set { self.center = CGPoint(x: newValue, y: self.centerY) } + get { return self.center.x } + } + + /// View's center Y value (center.y). + var centerY: CGFloat { + set { self.center = CGPoint(x: self.centerX, y: newValue) } + get { return self.center.y } + } + + /// Last subview on X Axis. + var lastSubviewOnX: UIView? { + return self.subviews.reduce(UIView(frame: .zero)) { + return $1.x > $0.x ? $1 : $0 + } + } + + /// Last subview on Y Axis. + var lastSubviewOnY: UIView? { + return self.subviews.reduce(UIView(frame: .zero)) { + return $1.y > $0.y ? $1 : $0 + } + } + + // MARK: - Bounds Methods + + /// X value of bounds (bounds.origin.x). + var boundsX: CGFloat { + set { self.bounds = CGRect(x: _pixelIntegral(newValue), + y: self.boundsY, + width: self.boundsWidth, + height: self.boundsHeight) + } + get { return self.bounds.origin.x } + } + + /// Y value of bounds (bounds.origin.y). + var boundsY: CGFloat { + set { self.frame = CGRect(x: self.boundsX, + y: _pixelIntegral(newValue), + width: self.boundsWidth, + height: self.boundsHeight) + } + get { return self.bounds.origin.y } + } + + /// Width of bounds (bounds.size.width). + var boundsWidth: CGFloat { + set { self.frame = CGRect(x: self.boundsX, + y: self.boundsY, + width: _pixelIntegral(newValue), + height: self.boundsHeight) + } + get { return self.bounds.size.width } + } + + /// Height of bounds (bounds.size.height). + var boundsHeight: CGFloat { + set { self.frame = CGRect(x: self.boundsX, + y: self.boundsY, + width: self.boundsWidth, + height: _pixelIntegral(newValue)) + } + get { return self.bounds.size.height } + } + + // MARK: - Useful Methods + + /// Center view to it's parent view. +// func centerToParent() { +// guard let superview = self.superview else { return } +// +// switch UIApplication.shared.statusBarOrientation { +// case .landscapeLeft, .landscapeRight: +// self.origin = CGPoint(x: (superview.height / 2) - (self.width / 2), +// y: (superview.width / 2) - (self.height / 2)) +// case .portrait, .portraitUpsideDown: +// self.origin = CGPoint(x: (superview.width / 2) - (self.width / 2), +// y: (superview.height / 2) - (self.height / 2)) +// case .unknown: +// return +// } +// } + + // MARK: - Private Methods + fileprivate func _pixelIntegral(_ pointValue: CGFloat) -> CGFloat { + let scale = UIScreen.main.scale + return (round(pointValue * scale) / scale) + } +} diff --git a/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 0000000000000000000000000000000000000000..9a91a2a01246fa9e28a56b0e63668e35dc602920 GIT binary patch literal 414061 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�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