From 9b1e90f601174c5dc30e4d4f30993017be9f5111 Mon Sep 17 00:00:00 2001 From: Serhii Butenko Date: Tue, 27 Sep 2016 10:59:57 +0300 Subject: [PATCH] Swift3 (#12) * Update due to swift 3 guidelines * Update readme * Rename classes * Update project settings * Set swift version * Minor fixes * Rename files * Drop carthage support because it doesn't work for now --- .swift-version | 1 + DisplaySwitcher.podspec | 4 +- .../DisplaySwitcher.xcodeproj/project.pbxproj | 886 ------------------ .../contents.xcworkspacedata | 7 - .../xcschemes/DisplaySwitcher.xcscheme | 80 -- .../DisplaySwitcher/DisplaySwitcher.h | 19 - DisplaySwitcher/DisplaySwitcher/Info.plist | 26 - .../DisplaySwitcher.xcodeproj/project.pbxproj | 8 +- Example/DisplaySwitcher/AppDelegate.swift | 14 +- .../AppIcon.appiconset/Contents.json | 10 + .../Base.lproj/LaunchScreen.storyboard | 9 +- .../Base.lproj/Main.storyboard | 29 +- .../Extensions/CustomColors.swift | 2 +- .../Extensions/StringUtitlities.swift | 3 +- .../DisplaySwitcher/Models/User/User.swift | 2 +- .../Protocols/CellInterface.swift | 2 +- .../UserViewController.swift | 69 +- .../UserCollectionViewCell.swift | 36 +- Example/Podfile.lock | 6 +- .../DisplaySwitcher.podspec.json | 4 +- Example/Pods/Manifest.lock | 6 +- Example/Pods/Pods.xcodeproj/project.pbxproj | 360 ++++--- .../DisplaySwitcher/Info.plist | 2 +- ...laySwitcher_Example-acknowledgements.plist | 2 + ...ods-DisplaySwitcher_Example.debug.xcconfig | 1 + ...s-DisplaySwitcher_Example.release.xcconfig | 1 + Example/Tests/Tests.swift | 2 +- .../BaseLayout/BaseLayoutAttributes.swift | 36 - ...Layout.swift => DisplaySwitchLayout.swift} | 88 +- .../DisplaySwitchLayoutAttributes.swift | 32 + .../TransitionLayout/TransitionLayout.swift | 53 +- .../TransitionManager/TransitionManager.swift | 48 +- ...nButton.swift => SwitchLayoutButton.swift} | 59 +- README.md | 32 +- 34 files changed, 470 insertions(+), 1469 deletions(-) create mode 100644 .swift-version delete mode 100644 DisplaySwitcher/DisplaySwitcher.xcodeproj/project.pbxproj delete mode 100644 DisplaySwitcher/DisplaySwitcher.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 DisplaySwitcher/DisplaySwitcher.xcodeproj/xcshareddata/xcschemes/DisplaySwitcher.xcscheme delete mode 100644 DisplaySwitcher/DisplaySwitcher/DisplaySwitcher.h delete mode 100644 DisplaySwitcher/DisplaySwitcher/Info.plist delete mode 100644 Pod/Classes/Layouts/BaseLayout/BaseLayoutAttributes.swift rename Pod/Classes/Layouts/{BaseLayout/BaseLayout.swift => DisplaySwitchLayout.swift} (50%) create mode 100644 Pod/Classes/Layouts/DisplaySwitchLayoutAttributes.swift rename Pod/Classes/Views/{RotationButton/RotationButton.swift => SwitchLayoutButton.swift} (61%) diff --git a/.swift-version b/.swift-version new file mode 100644 index 0000000..f398a20 --- /dev/null +++ b/.swift-version @@ -0,0 +1 @@ +3.0 \ No newline at end of file diff --git a/DisplaySwitcher.podspec b/DisplaySwitcher.podspec index 26ff2b2..b585a20 100644 --- a/DisplaySwitcher.podspec +++ b/DisplaySwitcher.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "DisplaySwitcher" - s.version = "0.1.1" + s.version = "1.0" s.summary = "This component implements custom transition between two collection view layouts." s.screenshot = 'https://d13yacurqjgara.cloudfront.net/users/116693/screenshots/2276068/open-uri20151005-3-walc59' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.platform = :ios, '8.0' s.ios.deployment_target = '8.0' - s.source = { :git => "https://github.com/Yalantis/DisplaySwitcher.git", :tag => "0.1.1" } + s.source = { :git => "https://github.com/Yalantis/DisplaySwitcher.git", :tag => s.version } s.source_files = 'Pod/Classes/**/*' s.requires_arc = true diff --git a/DisplaySwitcher/DisplaySwitcher.xcodeproj/project.pbxproj b/DisplaySwitcher/DisplaySwitcher.xcodeproj/project.pbxproj deleted file mode 100644 index 8a88340..0000000 --- a/DisplaySwitcher/DisplaySwitcher.xcodeproj/project.pbxproj +++ /dev/null @@ -1,886 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 775689401CC0FC700073A00F /* DisplaySwitcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 7756893F1CC0FC700073A00F /* DisplaySwitcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 775689521CC0FCC60073A00F /* BaseLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775689491CC0FCC60073A00F /* BaseLayout.swift */; }; - 775689531CC0FCC60073A00F /* BaseLayoutAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7756894A1CC0FCC60073A00F /* BaseLayoutAttributes.swift */; }; - 775689541CC0FCC60073A00F /* TransitionLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7756894C1CC0FCC60073A00F /* TransitionLayout.swift */; }; - 775689551CC0FCC60073A00F /* TransitionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7756894E1CC0FCC60073A00F /* TransitionManager.swift */; }; - 775689561CC0FCC60073A00F /* RotationButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775689511CC0FCC60073A00F /* RotationButton.swift */; }; - 775689AD1CC0FD2F0073A00F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775689591CC0FD2F0073A00F /* AppDelegate.swift */; }; - 775689AE1CC0FD2F0073A00F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7756895A1CC0FD2F0073A00F /* Assets.xcassets */; }; - 775689AF1CC0FD2F0073A00F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7756895B1CC0FD2F0073A00F /* LaunchScreen.storyboard */; }; - 775689B01CC0FD2F0073A00F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7756895D1CC0FD2F0073A00F /* Main.storyboard */; }; - 775689B11CC0FD2F0073A00F /* UserDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775689611CC0FD2F0073A00F /* UserDataProvider.swift */; }; - 775689B21CC0FD2F0073A00F /* DisplaySwitcher_Example-Bridging-Header.h in Headers */ = {isa = PBXBuildFile; fileRef = 775689621CC0FD2F0073A00F /* DisplaySwitcher_Example-Bridging-Header.h */; }; - 775689B31CC0FD2F0073A00F /* CustomColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775689641CC0FD2F0073A00F /* CustomColors.swift */; }; - 775689B41CC0FD2F0073A00F /* StringUtitlities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775689651CC0FD2F0073A00F /* StringUtitlities.swift */; }; - 775689B51CC0FD2F0073A00F /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 775689661CC0FD2F0073A00F /* Info.plist */; }; - 775689B61CC0FD2F0073A00F /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775689691CC0FD2F0073A00F /* User.swift */; }; - 775689B71CC0FD2F0073A00F /* CellInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7756896B1CC0FD2F0073A00F /* CellInterface.swift */; }; - 775689B81CC0FD2F0073A00F /* Dosis-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 7756896E1CC0FD2F0073A00F /* Dosis-Bold.otf */; }; - 775689B91CC0FD2F0073A00F /* Dosis-ExtraBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 7756896F1CC0FD2F0073A00F /* Dosis-ExtraBold.otf */; }; - 775689BA1CC0FD2F0073A00F /* Dosis-ExtraLight.otf in Resources */ = {isa = PBXBuildFile; fileRef = 775689701CC0FD2F0073A00F /* Dosis-ExtraLight.otf */; }; - 775689BB1CC0FD2F0073A00F /* Dosis-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 775689711CC0FD2F0073A00F /* Dosis-Light.otf */; }; - 775689BC1CC0FD2F0073A00F /* Dosis-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 775689721CC0FD2F0073A00F /* Dosis-Medium.otf */; }; - 775689BD1CC0FD2F0073A00F /* Dosis-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 775689731CC0FD2F0073A00F /* Dosis-Regular.otf */; }; - 775689BE1CC0FD2F0073A00F /* Dosis-SemiBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 775689741CC0FD2F0073A00F /* Dosis-SemiBold.otf */; }; - 775689BF1CC0FD2F0073A00F /* UserViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775689771CC0FD2F0073A00F /* UserViewController.swift */; }; - 775689C01CC0FD2F0073A00F /* UserCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7756897B1CC0FD2F0073A00F /* UserCollectionViewCell.swift */; }; - 775689C11CC0FD2F0073A00F /* UserCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7756897C1CC0FD2F0073A00F /* UserCollectionViewCell.xib */; }; - 775689C21CC0FD2F0073A00F /* DisplaySwitcher.xcworkspace in Resources */ = {isa = PBXBuildFile; fileRef = 775689801CC0FD2F0073A00F /* DisplaySwitcher.xcworkspace */; }; - 775689C31CC0FD2F0073A00F /* Podfile in Resources */ = {isa = PBXBuildFile; fileRef = 775689811CC0FD2F0073A00F /* Podfile */; }; - 775689C41CC0FD2F0073A00F /* Podfile.lock in Resources */ = {isa = PBXBuildFile; fileRef = 775689821CC0FD2F0073A00F /* Podfile.lock */; }; - 775689C51CC0FD2F0073A00F /* DisplaySwitcher.podspec.json in Resources */ = {isa = PBXBuildFile; fileRef = 775689861CC0FD2F0073A00F /* DisplaySwitcher.podspec.json */; }; - 775689C61CC0FD2F0073A00F /* Manifest.lock in Resources */ = {isa = PBXBuildFile; fileRef = 775689871CC0FD2F0073A00F /* Manifest.lock */; }; - 775689C71CC0FD2F0073A00F /* DisplaySwitcher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7756898D1CC0FD2F0073A00F /* DisplaySwitcher-dummy.m */; }; - 775689C81CC0FD2F0073A00F /* DisplaySwitcher-prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 7756898E1CC0FD2F0073A00F /* DisplaySwitcher-prefix.pch */; }; - 775689C91CC0FD2F0073A00F /* DisplaySwitcher-Private.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 7756898F1CC0FD2F0073A00F /* DisplaySwitcher-Private.xcconfig */; }; - 775689CA1CC0FD2F0073A00F /* DisplaySwitcher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 775689901CC0FD2F0073A00F /* DisplaySwitcher-umbrella.h */; }; - 775689CB1CC0FD2F0073A00F /* DisplaySwitcher.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 775689921CC0FD2F0073A00F /* DisplaySwitcher.xcconfig */; }; - 775689CC1CC0FD2F0073A00F /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 775689931CC0FD2F0073A00F /* Info.plist */; }; - 775689CD1CC0FD2F0073A00F /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 775689951CC0FD2F0073A00F /* Info.plist */; }; - 775689CE1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-acknowledgements.markdown in Sources */ = {isa = PBXBuildFile; fileRef = 775689961CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-acknowledgements.markdown */; }; - 775689CF1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-acknowledgements.plist in Resources */ = {isa = PBXBuildFile; fileRef = 775689971CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-acknowledgements.plist */; }; - 775689D01CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 775689981CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-dummy.m */; }; - 775689D11CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-frameworks.sh in Resources */ = {isa = PBXBuildFile; fileRef = 775689991CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-frameworks.sh */; }; - 775689D21CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-resources.sh in Resources */ = {isa = PBXBuildFile; fileRef = 7756899A1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-resources.sh */; }; - 775689D31CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7756899B1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-umbrella.h */; }; - 775689D41CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example.debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 7756899C1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example.debug.xcconfig */; }; - 775689D51CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example.release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 7756899E1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example.release.xcconfig */; }; - 775689D61CC0FD2F0073A00F /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 775689A01CC0FD2F0073A00F /* Info.plist */; }; - 775689D71CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-acknowledgements.markdown in Sources */ = {isa = PBXBuildFile; fileRef = 775689A11CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-acknowledgements.markdown */; }; - 775689D81CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-acknowledgements.plist in Resources */ = {isa = PBXBuildFile; fileRef = 775689A21CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-acknowledgements.plist */; }; - 775689D91CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 775689A31CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-dummy.m */; }; - 775689DA1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-frameworks.sh in Resources */ = {isa = PBXBuildFile; fileRef = 775689A41CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-frameworks.sh */; }; - 775689DB1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-resources.sh in Resources */ = {isa = PBXBuildFile; fileRef = 775689A51CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-resources.sh */; }; - 775689DC1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 775689A61CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-umbrella.h */; }; - 775689DD1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests.debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 775689A71CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests.debug.xcconfig */; }; - 775689DE1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests.release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 775689A91CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests.release.xcconfig */; }; - 775689DF1CC0FD2F0073A00F /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 775689AB1CC0FD2F0073A00F /* Info.plist */; }; - 775689E01CC0FD2F0073A00F /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775689AC1CC0FD2F0073A00F /* Tests.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 775689E31CC0FD2F0073A00F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 7756897D1CC0FD2F0073A00F /* DisplaySwitcher.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 607FACD01AFB9204008FA782; - remoteInfo = DisplaySwitcher_Example; - }; - 775689E51CC0FD2F0073A00F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 7756897D1CC0FD2F0073A00F /* DisplaySwitcher.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 607FACE51AFB9204008FA782; - remoteInfo = DisplaySwitcher_Tests; - }; - 775689EA1CC0FD2F0073A00F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 775689881CC0FD2F0073A00F /* Pods.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 20170C0384C99F3E2406AD528C79B8C9; - remoteInfo = DisplaySwitcher; - }; - 775689EC1CC0FD2F0073A00F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 775689881CC0FD2F0073A00F /* Pods.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 7E2591F51DE98B9E4119D309D261D064; - remoteInfo = "Pods-DisplaySwitcher_Example"; - }; - 775689EE1CC0FD2F0073A00F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 775689881CC0FD2F0073A00F /* Pods.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = B89E3E4156BEF1CE9810E597CA5BF9CC; - remoteInfo = "Pods-DisplaySwitcher_Tests"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 7756893C1CC0FC700073A00F /* DisplaySwitcher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DisplaySwitcher.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7756893F1CC0FC700073A00F /* DisplaySwitcher.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DisplaySwitcher.h; sourceTree = ""; }; - 775689411CC0FC700073A00F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 775689491CC0FCC60073A00F /* BaseLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseLayout.swift; sourceTree = ""; }; - 7756894A1CC0FCC60073A00F /* BaseLayoutAttributes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseLayoutAttributes.swift; sourceTree = ""; }; - 7756894C1CC0FCC60073A00F /* TransitionLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransitionLayout.swift; sourceTree = ""; }; - 7756894E1CC0FCC60073A00F /* TransitionManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransitionManager.swift; sourceTree = ""; }; - 775689511CC0FCC60073A00F /* RotationButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RotationButton.swift; sourceTree = ""; }; - 775689591CC0FD2F0073A00F /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7756895A1CC0FD2F0073A00F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 7756895C1CC0FD2F0073A00F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 7756895E1CC0FD2F0073A00F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 775689611CC0FD2F0073A00F /* UserDataProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserDataProvider.swift; sourceTree = ""; }; - 775689621CC0FD2F0073A00F /* DisplaySwitcher_Example-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "DisplaySwitcher_Example-Bridging-Header.h"; sourceTree = ""; }; - 775689641CC0FD2F0073A00F /* CustomColors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomColors.swift; sourceTree = ""; }; - 775689651CC0FD2F0073A00F /* StringUtitlities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringUtitlities.swift; sourceTree = ""; }; - 775689661CC0FD2F0073A00F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 775689691CC0FD2F0073A00F /* User.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; - 7756896B1CC0FD2F0073A00F /* CellInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CellInterface.swift; sourceTree = ""; }; - 7756896E1CC0FD2F0073A00F /* Dosis-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Dosis-Bold.otf"; sourceTree = ""; }; - 7756896F1CC0FD2F0073A00F /* Dosis-ExtraBold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Dosis-ExtraBold.otf"; sourceTree = ""; }; - 775689701CC0FD2F0073A00F /* Dosis-ExtraLight.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Dosis-ExtraLight.otf"; sourceTree = ""; }; - 775689711CC0FD2F0073A00F /* Dosis-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Dosis-Light.otf"; sourceTree = ""; }; - 775689721CC0FD2F0073A00F /* Dosis-Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Dosis-Medium.otf"; sourceTree = ""; }; - 775689731CC0FD2F0073A00F /* Dosis-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Dosis-Regular.otf"; sourceTree = ""; }; - 775689741CC0FD2F0073A00F /* Dosis-SemiBold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Dosis-SemiBold.otf"; sourceTree = ""; }; - 775689771CC0FD2F0073A00F /* UserViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserViewController.swift; sourceTree = ""; }; - 7756897B1CC0FD2F0073A00F /* UserCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserCollectionViewCell.swift; sourceTree = ""; }; - 7756897C1CC0FD2F0073A00F /* UserCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UserCollectionViewCell.xib; sourceTree = ""; }; - 7756897D1CC0FD2F0073A00F /* DisplaySwitcher.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = DisplaySwitcher.xcodeproj; sourceTree = ""; }; - 775689801CC0FD2F0073A00F /* DisplaySwitcher.xcworkspace */ = {isa = PBXFileReference; lastKnownFileType = wrapper.workspace; path = DisplaySwitcher.xcworkspace; sourceTree = ""; }; - 775689811CC0FD2F0073A00F /* Podfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Podfile; sourceTree = ""; }; - 775689821CC0FD2F0073A00F /* Podfile.lock */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Podfile.lock; sourceTree = ""; }; - 775689861CC0FD2F0073A00F /* DisplaySwitcher.podspec.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = DisplaySwitcher.podspec.json; sourceTree = ""; }; - 775689871CC0FD2F0073A00F /* Manifest.lock */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Manifest.lock; sourceTree = ""; }; - 775689881CC0FD2F0073A00F /* Pods.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = Pods.xcodeproj; sourceTree = ""; }; - 7756898D1CC0FD2F0073A00F /* DisplaySwitcher-dummy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "DisplaySwitcher-dummy.m"; sourceTree = ""; }; - 7756898E1CC0FD2F0073A00F /* DisplaySwitcher-prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "DisplaySwitcher-prefix.pch"; sourceTree = ""; }; - 7756898F1CC0FD2F0073A00F /* DisplaySwitcher-Private.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "DisplaySwitcher-Private.xcconfig"; sourceTree = ""; }; - 775689901CC0FD2F0073A00F /* DisplaySwitcher-umbrella.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "DisplaySwitcher-umbrella.h"; sourceTree = ""; }; - 775689911CC0FD2F0073A00F /* DisplaySwitcher.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = DisplaySwitcher.modulemap; sourceTree = ""; }; - 775689921CC0FD2F0073A00F /* DisplaySwitcher.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DisplaySwitcher.xcconfig; sourceTree = ""; }; - 775689931CC0FD2F0073A00F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 775689951CC0FD2F0073A00F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 775689961CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-acknowledgements.markdown */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = "Pods-DisplaySwitcher_Example-acknowledgements.markdown"; sourceTree = ""; }; - 775689971CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-acknowledgements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Pods-DisplaySwitcher_Example-acknowledgements.plist"; sourceTree = ""; }; - 775689981CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-dummy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Pods-DisplaySwitcher_Example-dummy.m"; sourceTree = ""; }; - 775689991CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-frameworks.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "Pods-DisplaySwitcher_Example-frameworks.sh"; sourceTree = ""; }; - 7756899A1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-resources.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "Pods-DisplaySwitcher_Example-resources.sh"; sourceTree = ""; }; - 7756899B1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-umbrella.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Pods-DisplaySwitcher_Example-umbrella.h"; sourceTree = ""; }; - 7756899C1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example.debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "Pods-DisplaySwitcher_Example.debug.xcconfig"; sourceTree = ""; }; - 7756899D1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = "Pods-DisplaySwitcher_Example.modulemap"; sourceTree = ""; }; - 7756899E1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example.release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "Pods-DisplaySwitcher_Example.release.xcconfig"; sourceTree = ""; }; - 775689A01CC0FD2F0073A00F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 775689A11CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = "Pods-DisplaySwitcher_Tests-acknowledgements.markdown"; sourceTree = ""; }; - 775689A21CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-acknowledgements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Pods-DisplaySwitcher_Tests-acknowledgements.plist"; sourceTree = ""; }; - 775689A31CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-dummy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Pods-DisplaySwitcher_Tests-dummy.m"; sourceTree = ""; }; - 775689A41CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-frameworks.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "Pods-DisplaySwitcher_Tests-frameworks.sh"; sourceTree = ""; }; - 775689A51CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-resources.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "Pods-DisplaySwitcher_Tests-resources.sh"; sourceTree = ""; }; - 775689A61CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-umbrella.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Pods-DisplaySwitcher_Tests-umbrella.h"; sourceTree = ""; }; - 775689A71CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests.debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "Pods-DisplaySwitcher_Tests.debug.xcconfig"; sourceTree = ""; }; - 775689A81CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = "Pods-DisplaySwitcher_Tests.modulemap"; sourceTree = ""; }; - 775689A91CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests.release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "Pods-DisplaySwitcher_Tests.release.xcconfig"; sourceTree = ""; }; - 775689AB1CC0FD2F0073A00F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 775689AC1CC0FD2F0073A00F /* Tests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 775689381CC0FC700073A00F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 775689321CC0FC700073A00F = { - isa = PBXGroup; - children = ( - 775689571CC0FD2F0073A00F /* Example */, - 775689471CC0FCC60073A00F /* Layouts */, - 7756894B1CC0FCC60073A00F /* TransitionLayout */, - 7756894D1CC0FCC60073A00F /* TransitionManager */, - 7756894F1CC0FCC60073A00F /* Views */, - 7756893E1CC0FC700073A00F /* DisplaySwitcher */, - 7756893D1CC0FC700073A00F /* Products */, - ); - sourceTree = ""; - }; - 7756893D1CC0FC700073A00F /* Products */ = { - isa = PBXGroup; - children = ( - 7756893C1CC0FC700073A00F /* DisplaySwitcher.framework */, - ); - name = Products; - sourceTree = ""; - }; - 7756893E1CC0FC700073A00F /* DisplaySwitcher */ = { - isa = PBXGroup; - children = ( - 7756893F1CC0FC700073A00F /* DisplaySwitcher.h */, - 775689411CC0FC700073A00F /* Info.plist */, - ); - path = DisplaySwitcher; - sourceTree = ""; - }; - 775689471CC0FCC60073A00F /* Layouts */ = { - isa = PBXGroup; - children = ( - 775689481CC0FCC60073A00F /* BaseLayout */, - ); - name = Layouts; - path = ../Pod/Classes/Layouts; - sourceTree = ""; - }; - 775689481CC0FCC60073A00F /* BaseLayout */ = { - isa = PBXGroup; - children = ( - 775689491CC0FCC60073A00F /* BaseLayout.swift */, - 7756894A1CC0FCC60073A00F /* BaseLayoutAttributes.swift */, - ); - path = BaseLayout; - sourceTree = ""; - }; - 7756894B1CC0FCC60073A00F /* TransitionLayout */ = { - isa = PBXGroup; - children = ( - 7756894C1CC0FCC60073A00F /* TransitionLayout.swift */, - ); - name = TransitionLayout; - path = ../Pod/Classes/TransitionLayout; - sourceTree = ""; - }; - 7756894D1CC0FCC60073A00F /* TransitionManager */ = { - isa = PBXGroup; - children = ( - 7756894E1CC0FCC60073A00F /* TransitionManager.swift */, - ); - name = TransitionManager; - path = ../Pod/Classes/TransitionManager; - sourceTree = ""; - }; - 7756894F1CC0FCC60073A00F /* Views */ = { - isa = PBXGroup; - children = ( - 775689501CC0FCC60073A00F /* RotationButton */, - ); - name = Views; - path = ../Pod/Classes/Views; - sourceTree = ""; - }; - 775689501CC0FCC60073A00F /* RotationButton */ = { - isa = PBXGroup; - children = ( - 775689511CC0FCC60073A00F /* RotationButton.swift */, - ); - path = RotationButton; - sourceTree = ""; - }; - 775689571CC0FD2F0073A00F /* Example */ = { - isa = PBXGroup; - children = ( - 775689581CC0FD2F0073A00F /* DisplaySwitcher */, - 7756897D1CC0FD2F0073A00F /* DisplaySwitcher.xcodeproj */, - 775689801CC0FD2F0073A00F /* DisplaySwitcher.xcworkspace */, - 775689811CC0FD2F0073A00F /* Podfile */, - 775689821CC0FD2F0073A00F /* Podfile.lock */, - 775689831CC0FD2F0073A00F /* Pods */, - 775689AA1CC0FD2F0073A00F /* Tests */, - ); - name = Example; - path = ../Example; - sourceTree = ""; - }; - 775689581CC0FD2F0073A00F /* DisplaySwitcher */ = { - isa = PBXGroup; - children = ( - 775689591CC0FD2F0073A00F /* AppDelegate.swift */, - 7756895A1CC0FD2F0073A00F /* Assets.xcassets */, - 7756895B1CC0FD2F0073A00F /* LaunchScreen.storyboard */, - 7756895D1CC0FD2F0073A00F /* Main.storyboard */, - 7756895F1CC0FD2F0073A00F /* DataProviders */, - 775689621CC0FD2F0073A00F /* DisplaySwitcher_Example-Bridging-Header.h */, - 775689631CC0FD2F0073A00F /* Extensions */, - 775689661CC0FD2F0073A00F /* Info.plist */, - 775689671CC0FD2F0073A00F /* Models */, - 7756896A1CC0FD2F0073A00F /* Protocols */, - 7756896C1CC0FD2F0073A00F /* Resources */, - 775689751CC0FD2F0073A00F /* ViewControllers */, - 775689781CC0FD2F0073A00F /* Views */, - ); - path = DisplaySwitcher; - sourceTree = ""; - }; - 7756895F1CC0FD2F0073A00F /* DataProviders */ = { - isa = PBXGroup; - children = ( - 775689601CC0FD2F0073A00F /* UserDataProvider */, - ); - path = DataProviders; - sourceTree = ""; - }; - 775689601CC0FD2F0073A00F /* UserDataProvider */ = { - isa = PBXGroup; - children = ( - 775689611CC0FD2F0073A00F /* UserDataProvider.swift */, - ); - path = UserDataProvider; - sourceTree = ""; - }; - 775689631CC0FD2F0073A00F /* Extensions */ = { - isa = PBXGroup; - children = ( - 775689641CC0FD2F0073A00F /* CustomColors.swift */, - 775689651CC0FD2F0073A00F /* StringUtitlities.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - 775689671CC0FD2F0073A00F /* Models */ = { - isa = PBXGroup; - children = ( - 775689681CC0FD2F0073A00F /* User */, - ); - path = Models; - sourceTree = ""; - }; - 775689681CC0FD2F0073A00F /* User */ = { - isa = PBXGroup; - children = ( - 775689691CC0FD2F0073A00F /* User.swift */, - ); - path = User; - sourceTree = ""; - }; - 7756896A1CC0FD2F0073A00F /* Protocols */ = { - isa = PBXGroup; - children = ( - 7756896B1CC0FD2F0073A00F /* CellInterface.swift */, - ); - path = Protocols; - sourceTree = ""; - }; - 7756896C1CC0FD2F0073A00F /* Resources */ = { - isa = PBXGroup; - children = ( - 7756896D1CC0FD2F0073A00F /* Fonts */, - ); - path = Resources; - sourceTree = ""; - }; - 7756896D1CC0FD2F0073A00F /* Fonts */ = { - isa = PBXGroup; - children = ( - 7756896E1CC0FD2F0073A00F /* Dosis-Bold.otf */, - 7756896F1CC0FD2F0073A00F /* Dosis-ExtraBold.otf */, - 775689701CC0FD2F0073A00F /* Dosis-ExtraLight.otf */, - 775689711CC0FD2F0073A00F /* Dosis-Light.otf */, - 775689721CC0FD2F0073A00F /* Dosis-Medium.otf */, - 775689731CC0FD2F0073A00F /* Dosis-Regular.otf */, - 775689741CC0FD2F0073A00F /* Dosis-SemiBold.otf */, - ); - path = Fonts; - sourceTree = ""; - }; - 775689751CC0FD2F0073A00F /* ViewControllers */ = { - isa = PBXGroup; - children = ( - 775689761CC0FD2F0073A00F /* UserViewController */, - ); - path = ViewControllers; - sourceTree = ""; - }; - 775689761CC0FD2F0073A00F /* UserViewController */ = { - isa = PBXGroup; - children = ( - 775689771CC0FD2F0073A00F /* UserViewController.swift */, - ); - path = UserViewController; - sourceTree = ""; - }; - 775689781CC0FD2F0073A00F /* Views */ = { - isa = PBXGroup; - children = ( - 775689791CC0FD2F0073A00F /* CollectionViewCells */, - ); - path = Views; - sourceTree = ""; - }; - 775689791CC0FD2F0073A00F /* CollectionViewCells */ = { - isa = PBXGroup; - children = ( - 7756897A1CC0FD2F0073A00F /* UserCollectionViewCell */, - ); - path = CollectionViewCells; - sourceTree = ""; - }; - 7756897A1CC0FD2F0073A00F /* UserCollectionViewCell */ = { - isa = PBXGroup; - children = ( - 7756897B1CC0FD2F0073A00F /* UserCollectionViewCell.swift */, - 7756897C1CC0FD2F0073A00F /* UserCollectionViewCell.xib */, - ); - path = UserCollectionViewCell; - sourceTree = ""; - }; - 7756897E1CC0FD2F0073A00F /* Products */ = { - isa = PBXGroup; - children = ( - 775689E41CC0FD2F0073A00F /* DisplaySwitcher_Example.app */, - 775689E61CC0FD2F0073A00F /* DisplaySwitcher_Tests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 775689831CC0FD2F0073A00F /* Pods */ = { - isa = PBXGroup; - children = ( - 775689841CC0FD2F0073A00F /* Headers */, - 775689851CC0FD2F0073A00F /* Local Podspecs */, - 775689871CC0FD2F0073A00F /* Manifest.lock */, - 775689881CC0FD2F0073A00F /* Pods.xcodeproj */, - 7756898B1CC0FD2F0073A00F /* Target Support Files */, - ); - path = Pods; - sourceTree = ""; - }; - 775689841CC0FD2F0073A00F /* Headers */ = { - isa = PBXGroup; - children = ( - ); - path = Headers; - sourceTree = ""; - }; - 775689851CC0FD2F0073A00F /* Local Podspecs */ = { - isa = PBXGroup; - children = ( - 775689861CC0FD2F0073A00F /* DisplaySwitcher.podspec.json */, - ); - path = "Local Podspecs"; - sourceTree = ""; - }; - 775689891CC0FD2F0073A00F /* Products */ = { - isa = PBXGroup; - children = ( - 775689EB1CC0FD2F0073A00F /* DisplaySwitcher.framework */, - 775689ED1CC0FD2F0073A00F /* Pods_DisplaySwitcher_Example.framework */, - 775689EF1CC0FD2F0073A00F /* Pods_DisplaySwitcher_Tests.framework */, - ); - name = Products; - sourceTree = ""; - }; - 7756898B1CC0FD2F0073A00F /* Target Support Files */ = { - isa = PBXGroup; - children = ( - 7756898C1CC0FD2F0073A00F /* DisplaySwitcher */, - 775689941CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example */, - 7756899F1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests */, - ); - path = "Target Support Files"; - sourceTree = ""; - }; - 7756898C1CC0FD2F0073A00F /* DisplaySwitcher */ = { - isa = PBXGroup; - children = ( - 7756898D1CC0FD2F0073A00F /* DisplaySwitcher-dummy.m */, - 7756898E1CC0FD2F0073A00F /* DisplaySwitcher-prefix.pch */, - 7756898F1CC0FD2F0073A00F /* DisplaySwitcher-Private.xcconfig */, - 775689901CC0FD2F0073A00F /* DisplaySwitcher-umbrella.h */, - 775689911CC0FD2F0073A00F /* DisplaySwitcher.modulemap */, - 775689921CC0FD2F0073A00F /* DisplaySwitcher.xcconfig */, - 775689931CC0FD2F0073A00F /* Info.plist */, - ); - path = DisplaySwitcher; - sourceTree = ""; - }; - 775689941CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example */ = { - isa = PBXGroup; - children = ( - 775689951CC0FD2F0073A00F /* Info.plist */, - 775689961CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-acknowledgements.markdown */, - 775689971CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-acknowledgements.plist */, - 775689981CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-dummy.m */, - 775689991CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-frameworks.sh */, - 7756899A1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-resources.sh */, - 7756899B1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-umbrella.h */, - 7756899C1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example.debug.xcconfig */, - 7756899D1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example.modulemap */, - 7756899E1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example.release.xcconfig */, - ); - path = "Pods-DisplaySwitcher_Example"; - sourceTree = ""; - }; - 7756899F1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests */ = { - isa = PBXGroup; - children = ( - 775689A01CC0FD2F0073A00F /* Info.plist */, - 775689A11CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-acknowledgements.markdown */, - 775689A21CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-acknowledgements.plist */, - 775689A31CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-dummy.m */, - 775689A41CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-frameworks.sh */, - 775689A51CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-resources.sh */, - 775689A61CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-umbrella.h */, - 775689A71CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests.debug.xcconfig */, - 775689A81CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests.modulemap */, - 775689A91CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests.release.xcconfig */, - ); - path = "Pods-DisplaySwitcher_Tests"; - sourceTree = ""; - }; - 775689AA1CC0FD2F0073A00F /* Tests */ = { - isa = PBXGroup; - children = ( - 775689AB1CC0FD2F0073A00F /* Info.plist */, - 775689AC1CC0FD2F0073A00F /* Tests.swift */, - ); - path = Tests; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 775689391CC0FC700073A00F /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 775689DC1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-umbrella.h in Headers */, - 775689CA1CC0FD2F0073A00F /* DisplaySwitcher-umbrella.h in Headers */, - 775689C81CC0FD2F0073A00F /* DisplaySwitcher-prefix.pch in Headers */, - 775689B21CC0FD2F0073A00F /* DisplaySwitcher_Example-Bridging-Header.h in Headers */, - 775689D31CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-umbrella.h in Headers */, - 775689401CC0FC700073A00F /* DisplaySwitcher.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 7756893B1CC0FC700073A00F /* DisplaySwitcher */ = { - isa = PBXNativeTarget; - buildConfigurationList = 775689441CC0FC700073A00F /* Build configuration list for PBXNativeTarget "DisplaySwitcher" */; - buildPhases = ( - 775689371CC0FC700073A00F /* Sources */, - 775689381CC0FC700073A00F /* Frameworks */, - 775689391CC0FC700073A00F /* Headers */, - 7756893A1CC0FC700073A00F /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = DisplaySwitcher; - productName = DisplaySwitcher; - productReference = 7756893C1CC0FC700073A00F /* DisplaySwitcher.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 775689331CC0FC700073A00F /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0730; - ORGANIZATIONNAME = yalantis; - TargetAttributes = { - 7756893B1CC0FC700073A00F = { - CreatedOnToolsVersion = 7.3; - }; - }; - }; - buildConfigurationList = 775689361CC0FC700073A00F /* Build configuration list for PBXProject "DisplaySwitcher" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 775689321CC0FC700073A00F; - productRefGroup = 7756893D1CC0FC700073A00F /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 7756897E1CC0FD2F0073A00F /* Products */; - ProjectRef = 7756897D1CC0FD2F0073A00F /* DisplaySwitcher.xcodeproj */; - }, - { - ProductGroup = 775689891CC0FD2F0073A00F /* Products */; - ProjectRef = 775689881CC0FD2F0073A00F /* Pods.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 7756893B1CC0FC700073A00F /* DisplaySwitcher */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 775689E41CC0FD2F0073A00F /* DisplaySwitcher_Example.app */ = { - isa = PBXReferenceProxy; - fileType = wrapper.application; - path = DisplaySwitcher_Example.app; - remoteRef = 775689E31CC0FD2F0073A00F /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 775689E61CC0FD2F0073A00F /* DisplaySwitcher_Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = DisplaySwitcher_Tests.xctest; - remoteRef = 775689E51CC0FD2F0073A00F /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 775689EB1CC0FD2F0073A00F /* DisplaySwitcher.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DisplaySwitcher.framework; - remoteRef = 775689EA1CC0FD2F0073A00F /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 775689ED1CC0FD2F0073A00F /* Pods_DisplaySwitcher_Example.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = Pods_DisplaySwitcher_Example.framework; - remoteRef = 775689EC1CC0FD2F0073A00F /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 775689EF1CC0FD2F0073A00F /* Pods_DisplaySwitcher_Tests.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = Pods_DisplaySwitcher_Tests.framework; - remoteRef = 775689EE1CC0FD2F0073A00F /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 7756893A1CC0FC700073A00F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 775689B51CC0FD2F0073A00F /* Info.plist in Resources */, - 775689BD1CC0FD2F0073A00F /* Dosis-Regular.otf in Resources */, - 775689BE1CC0FD2F0073A00F /* Dosis-SemiBold.otf in Resources */, - 775689BA1CC0FD2F0073A00F /* Dosis-ExtraLight.otf in Resources */, - 775689D41CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example.debug.xcconfig in Resources */, - 775689C91CC0FD2F0073A00F /* DisplaySwitcher-Private.xcconfig in Resources */, - 775689B01CC0FD2F0073A00F /* Main.storyboard in Resources */, - 775689AE1CC0FD2F0073A00F /* Assets.xcassets in Resources */, - 775689DF1CC0FD2F0073A00F /* Info.plist in Resources */, - 775689D11CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-frameworks.sh in Resources */, - 775689BC1CC0FD2F0073A00F /* Dosis-Medium.otf in Resources */, - 775689D51CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example.release.xcconfig in Resources */, - 775689CF1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-acknowledgements.plist in Resources */, - 775689DA1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-frameworks.sh in Resources */, - 775689DE1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests.release.xcconfig in Resources */, - 775689CC1CC0FD2F0073A00F /* Info.plist in Resources */, - 775689AF1CC0FD2F0073A00F /* LaunchScreen.storyboard in Resources */, - 775689CB1CC0FD2F0073A00F /* DisplaySwitcher.xcconfig in Resources */, - 775689DB1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-resources.sh in Resources */, - 775689BB1CC0FD2F0073A00F /* Dosis-Light.otf in Resources */, - 775689C11CC0FD2F0073A00F /* UserCollectionViewCell.xib in Resources */, - 775689D21CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-resources.sh in Resources */, - 775689C21CC0FD2F0073A00F /* DisplaySwitcher.xcworkspace in Resources */, - 775689B91CC0FD2F0073A00F /* Dosis-ExtraBold.otf in Resources */, - 775689D61CC0FD2F0073A00F /* Info.plist in Resources */, - 775689C41CC0FD2F0073A00F /* Podfile.lock in Resources */, - 775689C61CC0FD2F0073A00F /* Manifest.lock in Resources */, - 775689DD1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests.debug.xcconfig in Resources */, - 775689C31CC0FD2F0073A00F /* Podfile in Resources */, - 775689B81CC0FD2F0073A00F /* Dosis-Bold.otf in Resources */, - 775689C51CC0FD2F0073A00F /* DisplaySwitcher.podspec.json in Resources */, - 775689CD1CC0FD2F0073A00F /* Info.plist in Resources */, - 775689D81CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-acknowledgements.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 775689371CC0FC700073A00F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 775689AD1CC0FD2F0073A00F /* AppDelegate.swift in Sources */, - 775689E01CC0FD2F0073A00F /* Tests.swift in Sources */, - 775689BF1CC0FD2F0073A00F /* UserViewController.swift in Sources */, - 775689D91CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-dummy.m in Sources */, - 775689B41CC0FD2F0073A00F /* StringUtitlities.swift in Sources */, - 775689B11CC0FD2F0073A00F /* UserDataProvider.swift in Sources */, - 775689B31CC0FD2F0073A00F /* CustomColors.swift in Sources */, - 775689D01CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-dummy.m in Sources */, - 775689CE1CC0FD2F0073A00F /* Pods-DisplaySwitcher_Example-acknowledgements.markdown in Sources */, - 775689551CC0FCC60073A00F /* TransitionManager.swift in Sources */, - 775689521CC0FCC60073A00F /* BaseLayout.swift in Sources */, - 775689B71CC0FD2F0073A00F /* CellInterface.swift in Sources */, - 775689561CC0FCC60073A00F /* RotationButton.swift in Sources */, - 775689541CC0FCC60073A00F /* TransitionLayout.swift in Sources */, - 775689D71CC0FD2F0073A00F /* Pods-DisplaySwitcher_Tests-acknowledgements.markdown in Sources */, - 775689B61CC0FD2F0073A00F /* User.swift in Sources */, - 775689531CC0FCC60073A00F /* BaseLayoutAttributes.swift in Sources */, - 775689C71CC0FD2F0073A00F /* DisplaySwitcher-dummy.m in Sources */, - 775689C01CC0FD2F0073A00F /* UserCollectionViewCell.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 7756895B1CC0FD2F0073A00F /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 7756895C1CC0FD2F0073A00F /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; - 7756895D1CC0FD2F0073A00F /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 7756895E1CC0FD2F0073A00F /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 775689421CC0FC700073A00F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_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 = 9.3; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 775689431CC0FC700073A00F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 775689451CC0FC700073A00F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = DisplaySwitcher/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = yalantis.DisplaySwitcher; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - 775689461CC0FC700073A00F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = DisplaySwitcher/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = yalantis.DisplaySwitcher; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 775689361CC0FC700073A00F /* Build configuration list for PBXProject "DisplaySwitcher" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 775689421CC0FC700073A00F /* Debug */, - 775689431CC0FC700073A00F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 775689441CC0FC700073A00F /* Build configuration list for PBXNativeTarget "DisplaySwitcher" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 775689451CC0FC700073A00F /* Debug */, - 775689461CC0FC700073A00F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 775689331CC0FC700073A00F /* Project object */; -} diff --git a/DisplaySwitcher/DisplaySwitcher.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/DisplaySwitcher/DisplaySwitcher.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index caa6f75..0000000 --- a/DisplaySwitcher/DisplaySwitcher.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/DisplaySwitcher/DisplaySwitcher.xcodeproj/xcshareddata/xcschemes/DisplaySwitcher.xcscheme b/DisplaySwitcher/DisplaySwitcher.xcodeproj/xcshareddata/xcschemes/DisplaySwitcher.xcscheme deleted file mode 100644 index 7a70f1e..0000000 --- a/DisplaySwitcher/DisplaySwitcher.xcodeproj/xcshareddata/xcschemes/DisplaySwitcher.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DisplaySwitcher/DisplaySwitcher/DisplaySwitcher.h b/DisplaySwitcher/DisplaySwitcher/DisplaySwitcher.h deleted file mode 100644 index 0df3765..0000000 --- a/DisplaySwitcher/DisplaySwitcher/DisplaySwitcher.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// DisplaySwitcher.h -// DisplaySwitcher -// -// Created by Roman Scherbakov on 15.04.16. -// Copyright © 2016 yalantis. All rights reserved. -// - -#import - -//! Project version number for DisplaySwitcher. -FOUNDATION_EXPORT double DisplaySwitcherVersionNumber; - -//! Project version string for DisplaySwitcher. -FOUNDATION_EXPORT const unsigned char DisplaySwitcherVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/DisplaySwitcher/DisplaySwitcher/Info.plist b/DisplaySwitcher/DisplaySwitcher/Info.plist deleted file mode 100644 index d3de8ee..0000000 --- a/DisplaySwitcher/DisplaySwitcher/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 - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSPrincipalClass - - - diff --git a/Example/DisplaySwitcher.xcodeproj/project.pbxproj b/Example/DisplaySwitcher.xcodeproj/project.pbxproj index 846776e..cb2b4f9 100644 --- a/Example/DisplaySwitcher.xcodeproj/project.pbxproj +++ b/Example/DisplaySwitcher.xcodeproj/project.pbxproj @@ -360,9 +360,11 @@ TargetAttributes = { 607FACCF1AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; + LastSwiftMigration = 0800; }; 607FACE41AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; + LastSwiftMigration = 0800; TestTargetID = 607FACCF1AFB9204008FA782; }; }; @@ -457,7 +459,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + shellScript = "diff \"${PODS_ROOT}/../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"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -612,6 +614,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "DisplaySwitcher/DisplaySwitcher_Example-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; }; name = Debug; }; @@ -628,6 +631,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "DisplaySwitcher/DisplaySwitcher_Example-Bridging-Header.h"; + SWIFT_VERSION = 3.0; }; name = Release; }; @@ -646,6 +650,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; }; name = Debug; }; @@ -660,6 +665,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; }; name = Release; }; diff --git a/Example/DisplaySwitcher/AppDelegate.swift b/Example/DisplaySwitcher/AppDelegate.swift index f432b26..206a0e9 100644 --- a/Example/DisplaySwitcher/AppDelegate.swift +++ b/Example/DisplaySwitcher/AppDelegate.swift @@ -13,22 +13,20 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let navigationBarAppearace = UINavigationBar.appearance() navigationBarAppearace.titleTextAttributes = ([NSFontAttributeName: UIFont(name: "Dosis-SemiBold", size: 21)!, NSForegroundColorAttributeName: UIColor.navigationBarTintColor()]) UINavigationBar.appearance().barTintColor = UIColor.navigationBarBackgroundColor() - navigationBarAppearace.translucent = false + navigationBarAppearace.isTranslucent = false - UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent + UIApplication.shared.statusBarStyle = .lightContent - UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).backgroundColor = .blackColor() - UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).tintColor = .lightGrayColor() - UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).textColor = .lightGrayColor() + UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).backgroundColor = .black + UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).tintColor = .lightGray + UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).textColor = .lightGray return true } - } - diff --git a/Example/DisplaySwitcher/Assets.xcassets/AppIcon.appiconset/Contents.json b/Example/DisplaySwitcher/Assets.xcassets/AppIcon.appiconset/Contents.json index 118c98f..b8236c6 100644 --- a/Example/DisplaySwitcher/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Example/DisplaySwitcher/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,15 @@ { "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "29x29", diff --git a/Example/DisplaySwitcher/Base.lproj/LaunchScreen.storyboard b/Example/DisplaySwitcher/Base.lproj/LaunchScreen.storyboard index 342c1ee..2e4cb45 100644 --- a/Example/DisplaySwitcher/Base.lproj/LaunchScreen.storyboard +++ b/Example/DisplaySwitcher/Base.lproj/LaunchScreen.storyboard @@ -1,8 +1,9 @@ - + - + + @@ -14,9 +15,9 @@ - + - + diff --git a/Example/DisplaySwitcher/Base.lproj/Main.storyboard b/Example/DisplaySwitcher/Base.lproj/Main.storyboard index 56afca6..825ca58 100644 --- a/Example/DisplaySwitcher/Base.lproj/Main.storyboard +++ b/Example/DisplaySwitcher/Base.lproj/Main.storyboard @@ -1,15 +1,15 @@ - + - + + - @@ -20,7 +20,7 @@ - + @@ -35,18 +35,16 @@ - - - + - + @@ -56,8 +54,7 @@ - - + @@ -71,7 +68,7 @@ - + @@ -90,27 +87,25 @@ - + diff --git a/Example/DisplaySwitcher/Extensions/CustomColors.swift b/Example/DisplaySwitcher/Extensions/CustomColors.swift index 4068c4d..077429d 100644 --- a/Example/DisplaySwitcher/Extensions/CustomColors.swift +++ b/Example/DisplaySwitcher/Extensions/CustomColors.swift @@ -22,7 +22,7 @@ extension UIColor { return generateColor(171.0, green: 248.0, blue: 189.0, alpha: 1) } - static func generateColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) -> UIColor { + static func generateColor(_ red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) -> UIColor { return UIColor(red: red/255.0, green: green/255.0, blue: blue/255.0, alpha: alpha) } diff --git a/Example/DisplaySwitcher/Extensions/StringUtitlities.swift b/Example/DisplaySwitcher/Extensions/StringUtitlities.swift index 315d68c..1c888a5 100644 --- a/Example/DisplaySwitcher/Extensions/StringUtitlities.swift +++ b/Example/DisplaySwitcher/Extensions/StringUtitlities.swift @@ -13,4 +13,5 @@ extension String { var localized: String { return NSLocalizedString(self, comment: "") } -} \ No newline at end of file + +} diff --git a/Example/DisplaySwitcher/Models/User/User.swift b/Example/DisplaySwitcher/Models/User/User.swift index 47db82b..127794b 100644 --- a/Example/DisplaySwitcher/Models/User/User.swift +++ b/Example/DisplaySwitcher/Models/User/User.swift @@ -26,4 +26,4 @@ class User { self.likesCount = likesCount } -} \ No newline at end of file +} diff --git a/Example/DisplaySwitcher/Protocols/CellInterface.swift b/Example/DisplaySwitcher/Protocols/CellInterface.swift index 7b95d29..05d6d14 100644 --- a/Example/DisplaySwitcher/Protocols/CellInterface.swift +++ b/Example/DisplaySwitcher/Protocols/CellInterface.swift @@ -18,7 +18,7 @@ protocol CellInterface { extension CellInterface { static var id: String { - return String(Self) + return String(describing: Self.self) } static var cellNib: UINib { diff --git a/Example/DisplaySwitcher/ViewControllers/UserViewController/UserViewController.swift b/Example/DisplaySwitcher/ViewControllers/UserViewController/UserViewController.swift index 1ce65ac..0d8db56 100644 --- a/Example/DisplaySwitcher/ViewControllers/UserViewController/UserViewController.swift +++ b/Example/DisplaySwitcher/ViewControllers/UserViewController/UserViewController.swift @@ -9,24 +9,24 @@ import UIKit import DisplaySwitcher -private let animationDuration: NSTimeInterval = 0.3 +private let animationDuration: TimeInterval = 0.3 private let listLayoutStaticCellHeight: CGFloat = 80 private let gridLayoutStaticCellHeight: CGFloat = 165 class UserViewController: UIViewController { - @IBOutlet private weak var collectionView: UICollectionView! - @IBOutlet private weak var searchBar: UISearchBar! - @IBOutlet private weak var rotationButton: RotationButton! + @IBOutlet fileprivate weak var collectionView: UICollectionView! + @IBOutlet fileprivate weak var searchBar: UISearchBar! + @IBOutlet fileprivate weak var rotationButton: SwitchLayoutButton! - private var tap: UITapGestureRecognizer! - private var users = UserDataProvider().generateFakeUsers() - private var searchUsers = [User]() - private var isTransitionAvailable = true - private lazy var listLayout = BaseLayout(staticCellHeight: listLayoutStaticCellHeight, nextLayoutStaticCellHeight: gridLayoutStaticCellHeight, layoutState: .ListLayoutState) - private lazy var gridLayout = BaseLayout(staticCellHeight: gridLayoutStaticCellHeight, nextLayoutStaticCellHeight: listLayoutStaticCellHeight, layoutState: .GridLayoutState) - private var layoutState: CollectionViewLayoutState = .ListLayoutState + fileprivate var tap: UITapGestureRecognizer! + fileprivate var users = UserDataProvider().generateFakeUsers() + fileprivate var searchUsers = [User]() + fileprivate var isTransitionAvailable = true + fileprivate lazy var listLayout = DisplaySwitchLayout(staticCellHeight: listLayoutStaticCellHeight, nextLayoutStaticCellHeight: gridLayoutStaticCellHeight, layoutState: .list) + fileprivate lazy var gridLayout = DisplaySwitchLayout(staticCellHeight: gridLayoutStaticCellHeight, nextLayoutStaticCellHeight: listLayoutStaticCellHeight, layoutState: .grid) + fileprivate var layoutState: LayoutState = .list // MARK: - Lifecycle override func viewDidLoad() { @@ -35,31 +35,31 @@ class UserViewController: UIViewController { tap = UITapGestureRecognizer(target: self, action: #selector(handleTap)) searchUsers = users - rotationButton.selected = true + rotationButton.isSelected = true setupCollectionView() } // MARK: - Private methods - private func setupCollectionView() { + fileprivate func setupCollectionView() { collectionView.collectionViewLayout = listLayout - collectionView.registerNib(UserCollectionViewCell.cellNib, forCellWithReuseIdentifier:UserCollectionViewCell.id) + collectionView.register(UserCollectionViewCell.cellNib, forCellWithReuseIdentifier:UserCollectionViewCell.id) } // MARK: - Actions - @IBAction func buttonTapped(sender: AnyObject) { + @IBAction func buttonTapped(_ sender: AnyObject) { if !isTransitionAvailable { return } let transitionManager: TransitionManager - if layoutState == .ListLayoutState { - layoutState = .GridLayoutState + if layoutState == .list { + layoutState = .grid transitionManager = TransitionManager(duration: animationDuration, collectionView: collectionView!, destinationLayout: gridLayout, layoutState: layoutState) } else { - layoutState = .ListLayoutState + layoutState = .list transitionManager = TransitionManager(duration: animationDuration, collectionView: collectionView!, destinationLayout: listLayout, layoutState: layoutState) } transitionManager.startInteractiveTransition() - rotationButton.selected = layoutState == .ListLayoutState + rotationButton.isSelected = layoutState == .list rotationButton.animationDuration = animationDuration } @@ -72,37 +72,37 @@ class UserViewController: UIViewController { extension UserViewController { // MARK: - UICollectionViewDataSource - func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return searchUsers.count } - func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { - let cell = collectionView.dequeueReusableCellWithReuseIdentifier(UserCollectionViewCell.id, forIndexPath: indexPath) as! UserCollectionViewCell - if layoutState == .GridLayoutState { + func collectionView(_ collectionView: UICollectionView, cellForItemAtIndexPath indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: UserCollectionViewCell.id, for: indexPath) as! UserCollectionViewCell + if layoutState == .grid { cell.setupGridLayoutConstraints(1, cellWidth: cell.frame.width) } else { cell.setupListLayoutConstraints(1, cellWidth: cell.frame.width) } - cell.bind(searchUsers[indexPath.row]) + cell.bind(searchUsers[(indexPath as NSIndexPath).row]) return cell } // MARK: - UICollectionViewDelegate - func collectionView(collectionView: UICollectionView, transitionLayoutForOldLayout fromLayout: UICollectionViewLayout, newLayout toLayout: UICollectionViewLayout) -> UICollectionViewTransitionLayout { + func collectionView(_ collectionView: UICollectionView, transitionLayoutForOldLayout fromLayout: UICollectionViewLayout, newLayout toLayout: UICollectionViewLayout) -> UICollectionViewTransitionLayout { let customTransitionLayout = TransitionLayout(currentLayout: fromLayout, nextLayout: toLayout) return customTransitionLayout } - func scrollViewWillBeginDragging(scrollView: UIScrollView) { + func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { isTransitionAvailable = false } - func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) { + func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { isTransitionAvailable = true } - func scrollViewDidScroll(scrollView: UIScrollView) { + func scrollViewDidScroll(_ scrollView: UIScrollView) { view.endEditing(true) } @@ -110,30 +110,31 @@ extension UserViewController { extension UserViewController { - func searchBar(searchBar: UISearchBar, textDidChange searchText: String) { + func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { if searchText.isEmpty { searchUsers = users } else { - searchUsers = searchUsers.filter { return $0.name.containsString(searchText) } + searchUsers = searchUsers.filter { return $0.name.contains(searchText) } } collectionView.reloadData() } - func collectionView(collectionView: UICollectionView,didSelectItemAtIndexPath indexPath: NSIndexPath) { - print("Hi \(indexPath.row)") + func collectionView(_ collectionView: UICollectionView,didSelectItemAtIndexPath indexPath: IndexPath) { + print("Hi \((indexPath as NSIndexPath).row)") } - func searchBarTextDidBeginEditing(searchBar: UISearchBar) { + func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { view.addGestureRecognizer(tap) } - func searchBarTextDidEndEditing(searchBar: UISearchBar) { + func searchBarTextDidEndEditing(_ searchBar: UISearchBar) { view.removeGestureRecognizer(tap) } func handleTap() { view.endEditing(true) } + } diff --git a/Example/DisplaySwitcher/Views/CollectionViewCells/UserCollectionViewCell/UserCollectionViewCell.swift b/Example/DisplaySwitcher/Views/CollectionViewCells/UserCollectionViewCell/UserCollectionViewCell.swift index b7de8de..b41f398 100644 --- a/Example/DisplaySwitcher/Views/CollectionViewCells/UserCollectionViewCell/UserCollectionViewCell.swift +++ b/Example/DisplaySwitcher/Views/CollectionViewCells/UserCollectionViewCell/UserCollectionViewCell.swift @@ -13,15 +13,15 @@ private let avatarListLayoutSize: CGFloat = 80.0 class UserCollectionViewCell: UICollectionViewCell, CellInterface { - @IBOutlet private weak var avatarImageView: UIImageView! - @IBOutlet private weak var backgroundGradientView: UIView! - @IBOutlet private weak var nameListLabel: UILabel! - @IBOutlet private weak var nameGridLabel: UILabel! + @IBOutlet fileprivate weak var avatarImageView: UIImageView! + @IBOutlet fileprivate weak var backgroundGradientView: UIView! + @IBOutlet fileprivate weak var nameListLabel: UILabel! + @IBOutlet fileprivate weak var nameGridLabel: UILabel! @IBOutlet weak var statisticLabel: UILabel! // avatarImageView constraints - @IBOutlet private weak var avatarImageViewWidthConstraint: NSLayoutConstraint! - @IBOutlet private weak var avatarImageViewHeightConstraint: NSLayoutConstraint! + @IBOutlet fileprivate weak var avatarImageViewWidthConstraint: NSLayoutConstraint! + @IBOutlet fileprivate weak var avatarImageViewHeightConstraint: NSLayoutConstraint! // nameListLabel constraints @IBOutlet var nameListLabelLeadingConstraint: NSLayoutConstraint! { @@ -33,10 +33,10 @@ class UserCollectionViewCell: UICollectionViewCell, CellInterface { // statisticLabel constraints @IBOutlet weak var statisticLabelLeadingConstraint: NSLayoutConstraint! - private var avatarGridLayoutSize: CGFloat = 0.0 - private var initialLabelsLeadingConstraintValue: CGFloat = 0.0 + fileprivate var avatarGridLayoutSize: CGFloat = 0.0 + fileprivate var initialLabelsLeadingConstraintValue: CGFloat = 0.0 - func bind(user: User) { + func bind(_ user: User) { avatarImageView.image = user.avatar nameListLabel.text = user.name.localized + " " + user.surname.localized nameGridLabel.text = nameListLabel.text @@ -46,7 +46,7 @@ class UserCollectionViewCell: UICollectionViewCell, CellInterface { statisticLabel.text = userPostsString + userCommentsString + userLikesString } - func setupGridLayoutConstraints(transitionProgress: CGFloat, cellWidth: CGFloat) { + func setupGridLayoutConstraints(_ transitionProgress: CGFloat, cellWidth: CGFloat) { avatarImageViewHeightConstraint.constant = ceil((cellWidth - avatarListLayoutSize) * transitionProgress + avatarListLayoutSize) avatarImageViewWidthConstraint.constant = ceil(avatarImageViewHeightConstraint.constant) nameListLabelLeadingConstraint.constant = -avatarImageViewWidthConstraint.constant * transitionProgress + initialLabelsLeadingConstraintValue @@ -56,7 +56,7 @@ class UserCollectionViewCell: UICollectionViewCell, CellInterface { statisticLabel.alpha = 1 - transitionProgress } - func setupListLayoutConstraints(transitionProgress: CGFloat, cellWidth: CGFloat) { + func setupListLayoutConstraints(_ transitionProgress: CGFloat, cellWidth: CGFloat) { avatarImageViewHeightConstraint.constant = ceil(avatarGridLayoutSize - (avatarGridLayoutSize - avatarListLayoutSize) * transitionProgress) avatarImageViewWidthConstraint.constant = avatarImageViewHeightConstraint.constant nameListLabelLeadingConstraint.constant = avatarImageViewWidthConstraint.constant * transitionProgress + (initialLabelsLeadingConstraintValue - avatarImageViewHeightConstraint.constant) @@ -66,15 +66,15 @@ class UserCollectionViewCell: UICollectionViewCell, CellInterface { statisticLabel.alpha = transitionProgress } - override func applyLayoutAttributes(layoutAttributes: UICollectionViewLayoutAttributes) { - super.applyLayoutAttributes(layoutAttributes) - if let attributes = layoutAttributes as? BaseLayoutAttributes { + override func apply(_ layoutAttributes: UICollectionViewLayoutAttributes) { + super.apply(layoutAttributes) + if let attributes = layoutAttributes as? DisplaySwitchLayoutAttributes { if attributes.transitionProgress > 0 { - if attributes.layoutState == .GridLayoutState { - setupGridLayoutConstraints(attributes.transitionProgress, cellWidth: CGRectGetWidth(attributes.nextLayoutCellFrame)) - avatarGridLayoutSize = CGRectGetWidth(attributes.nextLayoutCellFrame) + if attributes.layoutState == .grid { + setupGridLayoutConstraints(attributes.transitionProgress, cellWidth: attributes.nextLayoutCellFrame.width) + avatarGridLayoutSize = attributes.nextLayoutCellFrame.width } else { - setupListLayoutConstraints(attributes.transitionProgress, cellWidth: CGRectGetWidth(attributes.nextLayoutCellFrame)) + setupListLayoutConstraints(attributes.transitionProgress, cellWidth: attributes.nextLayoutCellFrame.width) } } } diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 29e9c96..6f9e239 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - DisplaySwitcher (0.1.1) + - DisplaySwitcher (1.0) DEPENDENCIES: - DisplaySwitcher (from `../`) @@ -9,8 +9,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - DisplaySwitcher: c23a4f751a7994de130612e9c669f8684a2cc540 + DisplaySwitcher: 0b750bfc0426b83a983b26d0c26c06283c116c57 PODFILE CHECKSUM: 42d5f6f39d2fc86145445fd75dbb433b043dcc98 -COCOAPODS: 1.0.1 +COCOAPODS: 1.1.0.rc.2 diff --git a/Example/Pods/Local Podspecs/DisplaySwitcher.podspec.json b/Example/Pods/Local Podspecs/DisplaySwitcher.podspec.json index 27a17cc..b1c2af8 100644 --- a/Example/Pods/Local Podspecs/DisplaySwitcher.podspec.json +++ b/Example/Pods/Local Podspecs/DisplaySwitcher.podspec.json @@ -1,6 +1,6 @@ { "name": "DisplaySwitcher", - "version": "0.1.1", + "version": "1.0", "summary": "This component implements custom transition between two collection view layouts.", "screenshots": "https://d13yacurqjgara.cloudfront.net/users/116693/screenshots/2276068/open-uri20151005-3-walc59", "homepage": "https://github.com/Yalantis/DisplaySwitcher", @@ -15,7 +15,7 @@ }, "source": { "git": "https://github.com/Yalantis/DisplaySwitcher.git", - "tag": "0.1.1" + "tag": "1.0" }, "source_files": "Pod/Classes/**/*", "requires_arc": true diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 29e9c96..6f9e239 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,5 +1,5 @@ PODS: - - DisplaySwitcher (0.1.1) + - DisplaySwitcher (1.0) DEPENDENCIES: - DisplaySwitcher (from `../`) @@ -9,8 +9,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - DisplaySwitcher: c23a4f751a7994de130612e9c669f8684a2cc540 + DisplaySwitcher: 0b750bfc0426b83a983b26d0c26c06283c116c57 PODFILE CHECKSUM: 42d5f6f39d2fc86145445fd75dbb433b043dcc98 -COCOAPODS: 1.0.1 +COCOAPODS: 1.1.0.rc.2 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 1056cbd..0d3c156 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,17 +7,17 @@ objects = { /* Begin PBXBuildFile section */ - 017A521D0BA7A4B151ABAEBD3DE7B8FA /* RotationButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2CB6C1890E2B06F11AD668BA56467E9 /* RotationButton.swift */; }; 02AC55A7E1E8529332616D9A460C0986 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; - 02AF2BC6C873084E6A80A7E4C6E8EF07 /* BaseLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B62A7B928FFAAE5C39758E9657730A /* BaseLayout.swift */; }; - 533DE0146817D10A4AEA8EC43854BD4B /* TransitionLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F36F4B1A3FEAAA2B3F3A41AC36E5B2B /* TransitionLayout.swift */; }; - 5A5A1786676FA5BB11D4DB1956FBE0E6 /* BaseLayoutAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 296C9812AA9022DE19543564D8ED86A3 /* BaseLayoutAttributes.swift */; }; + 1138469247F329617F7DFEED06E26FC2 /* TransitionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 012A9E05E920036E57190878B7E663B9 /* TransitionManager.swift */; }; + 2DF3302442E5DB5AD7550DC61D46C34A /* DisplaySwitcher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E3D7D530D5F87952C7779E5872038E5 /* DisplaySwitcher-dummy.m */; }; 5FC156D9B1229FCE8E3A67F6FEED2CEE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; 6C58204AA0FEBB8ACACED6AC9751A9CF /* DisplaySwitcher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 928063B48F506E2DFCFCEEA67C5857C0 /* DisplaySwitcher-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 757A7B57ECD6E9F818162A1A27B9CCA0 /* DisplaySwitchLayoutAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4A37A7EBC7071B03409B0895B41067C /* DisplaySwitchLayoutAttributes.swift */; }; + 763870E08ECF0DF98E6BDBB26FF5EB43 /* TransitionLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53ACFA397904D2518DAB8BC2837075DD /* TransitionLayout.swift */; }; + 79FAAE4BAC936C94A99B8A585F0D13FD /* SwitchLayoutButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 732C6B6DA13ED1863B6648609C534FB5 /* SwitchLayoutButton.swift */; }; 9268E036B952F02B79AB7057AAA1961F /* Pods-DisplaySwitcher_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 830D1C416D36AB6729FBFC37832A24EF /* Pods-DisplaySwitcher_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A639FB8A03FC8EE1BEA9F5E8621258D5 /* DisplaySwitcher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E3D7D530D5F87952C7779E5872038E5 /* DisplaySwitcher-dummy.m */; }; AAD996E961F0CB8FECEF0C5FFA67442F /* Pods-DisplaySwitcher_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CD8C4AC894AB9E2804442C1AAA2CC42D /* Pods-DisplaySwitcher_Example-dummy.m */; }; - CAECE181C8DB31F1ADC8123AB9DC7B14 /* TransitionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC79D6AA268F150E72B845DF4ED6A34 /* TransitionManager.swift */; }; + CAB58DEF2A61C3FDFB80DC6912C9A33B /* DisplaySwitchLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5651DDA3DE8E2F2786EAF5EA5780FA56 /* DisplaySwitchLayout.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -31,16 +31,17 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 012A9E05E920036E57190878B7E663B9 /* TransitionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TransitionManager.swift; sourceTree = ""; }; 1170F0A8956A13D2ED245C3D98A9CB79 /* DisplaySwitcher.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DisplaySwitcher.xcconfig; sourceTree = ""; }; 1A88F8E53E5584B9C93C35EEF0C866D6 /* Pods-DisplaySwitcher_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-DisplaySwitcher_Example-acknowledgements.markdown"; sourceTree = ""; }; - 296C9812AA9022DE19543564D8ED86A3 /* BaseLayoutAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BaseLayoutAttributes.swift; sourceTree = ""; }; 4070947A3342573C2AA1BBCD08464C72 /* Pods-DisplaySwitcher_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DisplaySwitcher_Example-frameworks.sh"; sourceTree = ""; }; 4E758E234FECC25CF2FBFFCC738D54D2 /* Pods_DisplaySwitcher_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DisplaySwitcher_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4F36F4B1A3FEAAA2B3F3A41AC36E5B2B /* TransitionLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TransitionLayout.swift; sourceTree = ""; }; 536F281CE82EE5E3DBE9B074EAB62513 /* Pods-DisplaySwitcher_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DisplaySwitcher_Example-acknowledgements.plist"; sourceTree = ""; }; + 53ACFA397904D2518DAB8BC2837075DD /* TransitionLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TransitionLayout.swift; sourceTree = ""; }; + 5651DDA3DE8E2F2786EAF5EA5780FA56 /* DisplaySwitchLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DisplaySwitchLayout.swift; sourceTree = ""; }; 5B949A70DD1B9E1B437BE3675C13D461 /* Pods-DisplaySwitcher_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-DisplaySwitcher_Example.modulemap"; sourceTree = ""; }; - 62B62A7B928FFAAE5C39758E9657730A /* BaseLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BaseLayout.swift; sourceTree = ""; }; 70F75354FF8AF6D60142D82D3265A688 /* DisplaySwitcher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = DisplaySwitcher.modulemap; sourceTree = ""; }; + 732C6B6DA13ED1863B6648609C534FB5 /* SwitchLayoutButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SwitchLayoutButton.swift; sourceTree = ""; }; 7E3D7D530D5F87952C7779E5872038E5 /* DisplaySwitcher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DisplaySwitcher-dummy.m"; sourceTree = ""; }; 830D1C416D36AB6729FBFC37832A24EF /* Pods-DisplaySwitcher_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-DisplaySwitcher_Example-umbrella.h"; sourceTree = ""; }; 8CE6789414BDDE48252F2B922FE8C58A /* Pods-DisplaySwitcher_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DisplaySwitcher_Example-resources.sh"; sourceTree = ""; }; @@ -48,14 +49,13 @@ 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9D562BA50DC01A53789957BEA77D5157 /* DisplaySwitcher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DisplaySwitcher-prefix.pch"; sourceTree = ""; }; A97006B8EB56F4301383873A6FFD8F25 /* DisplaySwitcher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DisplaySwitcher.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B4A37A7EBC7071B03409B0895B41067C /* DisplaySwitchLayoutAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DisplaySwitchLayoutAttributes.swift; sourceTree = ""; }; CD8C4AC894AB9E2804442C1AAA2CC42D /* Pods-DisplaySwitcher_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-DisplaySwitcher_Example-dummy.m"; sourceTree = ""; }; CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; CF11501A944DC601031B5971DADE6E33 /* Pods-DisplaySwitcher_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DisplaySwitcher_Example.release.xcconfig"; sourceTree = ""; }; - DBC79D6AA268F150E72B845DF4ED6A34 /* TransitionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TransitionManager.swift; sourceTree = ""; }; E4C801C1EEBA47FBC85AA5AAB1EC7E20 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; E84FB7850D7BA11C3D17BA58EA7FF598 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; EF46B4785A548553283ECF72C82F0C99 /* Pods-DisplaySwitcher_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DisplaySwitcher_Example.debug.xcconfig"; sourceTree = ""; }; - F2CB6C1890E2B06F11AD668BA56467E9 /* RotationButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RotationButton.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -81,19 +81,11 @@ 1544A918BEC8168E023B049A8DF627A8 /* Pod */ = { isa = PBXGroup; children = ( - A831990F8178220C498E2A5E2C0000E3 /* Classes */, + B6E079A3D8ABFB980875B0F9259326AF /* Classes */, ); path = Pod; sourceTree = ""; }; - 1F4DE42F6DE81C8EB154A2FF507A11B0 /* Views */ = { - isa = PBXGroup; - children = ( - D856F8120470DB6FEB01EF88E450578E /* RotationButton */, - ); - path = Views; - sourceTree = ""; - }; 237A742DE67B79872F59A8A7D566FDC4 /* DisplaySwitcher */ = { isa = PBXGroup; children = ( @@ -112,6 +104,14 @@ name = iOS; sourceTree = ""; }; + 582D37F8B608ADB88DB784C48520D411 /* TransitionLayout */ = { + isa = PBXGroup; + children = ( + 53ACFA397904D2518DAB8BC2837075DD /* TransitionLayout.swift */, + ); + path = TransitionLayout; + sourceTree = ""; + }; 5A6EECF91DF19E46F5313FEC2F14106D /* Development Pods */ = { isa = PBXGroup; children = ( @@ -149,22 +149,6 @@ ); sourceTree = ""; }; - 847D36CA8C72CF6BA83F0C86AB53E968 /* TransitionManager */ = { - isa = PBXGroup; - children = ( - DBC79D6AA268F150E72B845DF4ED6A34 /* TransitionManager.swift */, - ); - path = TransitionManager; - sourceTree = ""; - }; - 84CA9ABDECB0DF7A464FD2F7BAD564D6 /* Layouts */ = { - isa = PBXGroup; - children = ( - DF5A7A1182ABB23AE4B1647B53706A6B /* BaseLayout */, - ); - path = Layouts; - sourceTree = ""; - }; A141AEFC44293189111352B614440D1B /* Products */ = { isa = PBXGroup; children = ( @@ -174,13 +158,13 @@ name = Products; sourceTree = ""; }; - A831990F8178220C498E2A5E2C0000E3 /* Classes */ = { + B6E079A3D8ABFB980875B0F9259326AF /* Classes */ = { isa = PBXGroup; children = ( - 84CA9ABDECB0DF7A464FD2F7BAD564D6 /* Layouts */, - E4D6559985EF5986095C455A8A138EFC /* TransitionLayout */, - 847D36CA8C72CF6BA83F0C86AB53E968 /* TransitionManager */, - 1F4DE42F6DE81C8EB154A2FF507A11B0 /* Views */, + F812EEC177A81001E3212BCCE9F50E99 /* Layouts */, + 582D37F8B608ADB88DB784C48520D411 /* TransitionLayout */, + C5938C031B9984252C4D57D5C779EB3F /* TransitionManager */, + EEA71B000390F6F68EA934A690FF6570 /* Views */, ); path = Classes; sourceTree = ""; @@ -193,6 +177,14 @@ name = Frameworks; sourceTree = ""; }; + C5938C031B9984252C4D57D5C779EB3F /* TransitionManager */ = { + isa = PBXGroup; + children = ( + 012A9E05E920036E57190878B7E663B9 /* TransitionManager.swift */, + ); + path = TransitionManager; + sourceTree = ""; + }; D500F4569E42782756CFB3AFA5C62C64 /* Support Files */ = { isa = PBXGroup; children = ( @@ -207,37 +199,29 @@ path = "Example/Pods/Target Support Files/DisplaySwitcher"; sourceTree = ""; }; - D856F8120470DB6FEB01EF88E450578E /* RotationButton */ = { + EEA71B000390F6F68EA934A690FF6570 /* Views */ = { isa = PBXGroup; children = ( - F2CB6C1890E2B06F11AD668BA56467E9 /* RotationButton.swift */, + 732C6B6DA13ED1863B6648609C534FB5 /* SwitchLayoutButton.swift */, ); - path = RotationButton; - sourceTree = ""; - }; - DF5A7A1182ABB23AE4B1647B53706A6B /* BaseLayout */ = { - isa = PBXGroup; - children = ( - 62B62A7B928FFAAE5C39758E9657730A /* BaseLayout.swift */, - 296C9812AA9022DE19543564D8ED86A3 /* BaseLayoutAttributes.swift */, - ); - path = BaseLayout; + path = Views; sourceTree = ""; }; - E4D6559985EF5986095C455A8A138EFC /* TransitionLayout */ = { + EFDFD9E84C6F9581C4423DF0603784C7 /* Targets Support Files */ = { isa = PBXGroup; children = ( - 4F36F4B1A3FEAAA2B3F3A41AC36E5B2B /* TransitionLayout.swift */, + 797118EBD54C0C39BFCCB230A39E87A1 /* Pods-DisplaySwitcher_Example */, ); - path = TransitionLayout; + name = "Targets Support Files"; sourceTree = ""; }; - EFDFD9E84C6F9581C4423DF0603784C7 /* Targets Support Files */ = { + F812EEC177A81001E3212BCCE9F50E99 /* Layouts */ = { isa = PBXGroup; children = ( - 797118EBD54C0C39BFCCB230A39E87A1 /* Pods-DisplaySwitcher_Example */, + B4A37A7EBC7071B03409B0895B41067C /* DisplaySwitchLayoutAttributes.swift */, + 5651DDA3DE8E2F2786EAF5EA5780FA56 /* DisplaySwitchLayout.swift */, ); - name = "Targets Support Files"; + path = Layouts; sourceTree = ""; }; /* End PBXGroup section */ @@ -284,7 +268,7 @@ isa = PBXNativeTarget; buildConfigurationList = 39D8F5DA7BE2B5F1F3BF9E12C8D0C251 /* Build configuration list for PBXNativeTarget "DisplaySwitcher" */; buildPhases = ( - 04D174E558D961BE8889EEB23C775C03 /* Sources */, + C88BBCC709B8957DE40B54DF8D4E708A /* Sources */, 90C0A689D7F2721971E86D668128255B /* Frameworks */, 21BAB1C9B4B05F60A0D0C01A2F971BE1 /* Headers */, ); @@ -325,24 +309,24 @@ /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 04D174E558D961BE8889EEB23C775C03 /* Sources */ = { + 9C4B8C6590EF3E4B44350734F63F8D23 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 02AF2BC6C873084E6A80A7E4C6E8EF07 /* BaseLayout.swift in Sources */, - 5A5A1786676FA5BB11D4DB1956FBE0E6 /* BaseLayoutAttributes.swift in Sources */, - A639FB8A03FC8EE1BEA9F5E8621258D5 /* DisplaySwitcher-dummy.m in Sources */, - 017A521D0BA7A4B151ABAEBD3DE7B8FA /* RotationButton.swift in Sources */, - 533DE0146817D10A4AEA8EC43854BD4B /* TransitionLayout.swift in Sources */, - CAECE181C8DB31F1ADC8123AB9DC7B14 /* TransitionManager.swift in Sources */, + AAD996E961F0CB8FECEF0C5FFA67442F /* Pods-DisplaySwitcher_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9C4B8C6590EF3E4B44350734F63F8D23 /* Sources */ = { + C88BBCC709B8957DE40B54DF8D4E708A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - AAD996E961F0CB8FECEF0C5FFA67442F /* Pods-DisplaySwitcher_Example-dummy.m in Sources */, + 757A7B57ECD6E9F818162A1A27B9CCA0 /* DisplaySwitchLayoutAttributes.swift in Sources */, + 2DF3302442E5DB5AD7550DC61D46C34A /* DisplaySwitcher-dummy.m in Sources */, + CAB58DEF2A61C3FDFB80DC6912C9A33B /* DisplaySwitchLayout.swift in Sources */, + 79FAAE4BAC936C94A99B8A585F0D13FD /* SwitchLayoutButton.swift in Sources */, + 763870E08ECF0DF98E6BDBB26FF5EB43 /* TransitionLayout.swift in Sources */, + 1138469247F329617F7DFEED06E26FC2 /* TransitionManager.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -358,112 +342,13 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 034014829C1E4434983CF3A690C12017 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - ONLY_ACTIVE_ARCH = YES; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 0B3F75A44C4B096E9B306B6AB2904274 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1170F0A8956A13D2ED245C3D98A9CB79 /* DisplaySwitcher.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/DisplaySwitcher/DisplaySwitcher-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/DisplaySwitcher/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/DisplaySwitcher/DisplaySwitcher.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = DisplaySwitcher; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 25DC9CE809BEE98E9A601BF53B4C8AE2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1170F0A8956A13D2ED245C3D98A9CB79 /* DisplaySwitcher.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/DisplaySwitcher/DisplaySwitcher-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/DisplaySwitcher/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/DisplaySwitcher/DisplaySwitcher.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = DisplaySwitcher; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 7240B9D0DF8B09ADF76C8A57EF985E1E /* Release */ = { + 231AC283D94AC3B78546D040E5BD338D /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = CF11501A944DC601031B5971DADE6E33 /* Pods-DisplaySwitcher_Example.release.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; @@ -492,11 +377,13 @@ }; name = Release; }; - 9BC7C14B3FF41D5935D0830C2F9A6BFD /* Debug */ = { + 4F94388689CB37A7E3FDCDBA0DE8634F /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = EF46B4785A548553283ECF72C82F0C99 /* Pods-DisplaySwitcher_Example.debug.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; @@ -526,7 +413,51 @@ }; name = Debug; }; - C7E474A03CAE21F1CB6046E7344C59BD /* Release */ = { + 59B042A655B7C20CBAB90E385BF4E4C7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + ONLY_ACTIVE_ARCH = YES; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + B7324857C38B065FEB1EEE3105C2367A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -544,6 +475,7 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = YES; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -558,20 +490,86 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; STRIP_INSTALLED_PRODUCT = NO; SYMROOT = "${SRCROOT}/../build"; VALIDATE_PRODUCT = YES; }; name = Release; }; + EA03F1AEAEB1EF85E6681FC206AE994D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1170F0A8956A13D2ED245C3D98A9CB79 /* DisplaySwitcher.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/DisplaySwitcher/DisplaySwitcher-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/DisplaySwitcher/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/DisplaySwitcher/DisplaySwitcher.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = DisplaySwitcher; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + FA259D48692A05A1EE5BD541CE704EEF /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1170F0A8956A13D2ED245C3D98A9CB79 /* DisplaySwitcher.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/DisplaySwitcher/DisplaySwitcher-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/DisplaySwitcher/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/DisplaySwitcher/DisplaySwitcher.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = DisplaySwitcher; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 034014829C1E4434983CF3A690C12017 /* Debug */, - C7E474A03CAE21F1CB6046E7344C59BD /* Release */, + 59B042A655B7C20CBAB90E385BF4E4C7 /* Debug */, + B7324857C38B065FEB1EEE3105C2367A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -579,8 +577,8 @@ 39D8F5DA7BE2B5F1F3BF9E12C8D0C251 /* Build configuration list for PBXNativeTarget "DisplaySwitcher" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0B3F75A44C4B096E9B306B6AB2904274 /* Debug */, - 25DC9CE809BEE98E9A601BF53B4C8AE2 /* Release */, + FA259D48692A05A1EE5BD541CE704EEF /* Debug */, + EA03F1AEAEB1EF85E6681FC206AE994D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -588,8 +586,8 @@ AE6FA5ED06DCE5D3D2955E95C5D0204B /* Build configuration list for PBXNativeTarget "Pods-DisplaySwitcher_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9BC7C14B3FF41D5935D0830C2F9A6BFD /* Debug */, - 7240B9D0DF8B09ADF76C8A57EF985E1E /* Release */, + 4F94388689CB37A7E3FDCDBA0DE8634F /* Debug */, + 231AC283D94AC3B78546D040E5BD338D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/Pods/Target Support Files/DisplaySwitcher/Info.plist b/Example/Pods/Target Support Files/DisplaySwitcher/Info.plist index 97eeeda..2243fe6 100644 --- a/Example/Pods/Target Support Files/DisplaySwitcher/Info.plist +++ b/Example/Pods/Target Support Files/DisplaySwitcher/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.1.1 + 1.0.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/Pods-DisplaySwitcher_Example/Pods-DisplaySwitcher_Example-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-DisplaySwitcher_Example/Pods-DisplaySwitcher_Example-acknowledgements.plist index c53aa91..70a138c 100644 --- a/Example/Pods/Target Support Files/Pods-DisplaySwitcher_Example/Pods-DisplaySwitcher_Example-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-DisplaySwitcher_Example/Pods-DisplaySwitcher_Example-acknowledgements.plist @@ -36,6 +36,8 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + License + MIT Title DisplaySwitcher Type diff --git a/Example/Pods/Target Support Files/Pods-DisplaySwitcher_Example/Pods-DisplaySwitcher_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-DisplaySwitcher_Example/Pods-DisplaySwitcher_Example.debug.xcconfig index e462496..bfc269d 100644 --- a/Example/Pods/Target Support Files/Pods-DisplaySwitcher_Example/Pods-DisplaySwitcher_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-DisplaySwitcher_Example/Pods-DisplaySwitcher_Example.debug.xcconfig @@ -1,3 +1,4 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES EMBEDDED_CONTENT_CONTAINS_SWIFT = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/DisplaySwitcher" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 diff --git a/Example/Pods/Target Support Files/Pods-DisplaySwitcher_Example/Pods-DisplaySwitcher_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-DisplaySwitcher_Example/Pods-DisplaySwitcher_Example.release.xcconfig index e462496..bfc269d 100644 --- a/Example/Pods/Target Support Files/Pods-DisplaySwitcher_Example/Pods-DisplaySwitcher_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-DisplaySwitcher_Example/Pods-DisplaySwitcher_Example.release.xcconfig @@ -1,3 +1,4 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES EMBEDDED_CONTENT_CONTAINS_SWIFT = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/DisplaySwitcher" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 diff --git a/Example/Tests/Tests.swift b/Example/Tests/Tests.swift index d670933..f72f944 100644 --- a/Example/Tests/Tests.swift +++ b/Example/Tests/Tests.swift @@ -20,7 +20,7 @@ class Tests: XCTestCase { func testPerformanceExample() { // This is an example of a performance test case. - self.measureBlock() { + self.measure() { // Put the code you want to measure the time of here. } } diff --git a/Pod/Classes/Layouts/BaseLayout/BaseLayoutAttributes.swift b/Pod/Classes/Layouts/BaseLayout/BaseLayoutAttributes.swift deleted file mode 100644 index c93e805..0000000 --- a/Pod/Classes/Layouts/BaseLayout/BaseLayoutAttributes.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// BaseLayoutAttributes.swift -// YALLayoutTransitioning -// -// Created by Roman on 09.03.16. -// Copyright © 2016 Yalantis. All rights reserved. -// - -import UIKit - -public class BaseLayoutAttributes: UICollectionViewLayoutAttributes { - - public var transitionProgress: CGFloat = 0.0 - public var nextLayoutCellFrame = CGRectZero - public var layoutState: CollectionViewLayoutState = .ListLayoutState - - override public func copyWithZone(zone: NSZone) -> AnyObject { - let copy = super.copyWithZone(zone) as! BaseLayoutAttributes - copy.transitionProgress = transitionProgress - copy.nextLayoutCellFrame = nextLayoutCellFrame - copy.layoutState = layoutState - - return copy - } - - override public func isEqual(object: AnyObject?) -> Bool { - if let attributes = object as? BaseLayoutAttributes { - if attributes.transitionProgress == transitionProgress && nextLayoutCellFrame == nextLayoutCellFrame && layoutState == layoutState { - return super.isEqual(object) - } - } - - return false - } - -} \ No newline at end of file diff --git a/Pod/Classes/Layouts/BaseLayout/BaseLayout.swift b/Pod/Classes/Layouts/DisplaySwitchLayout.swift similarity index 50% rename from Pod/Classes/Layouts/BaseLayout/BaseLayout.swift rename to Pod/Classes/Layouts/DisplaySwitchLayout.swift index 7e4eb1b..ba9d9c4 100644 --- a/Pod/Classes/Layouts/BaseLayout/BaseLayout.swift +++ b/Pod/Classes/Layouts/DisplaySwitchLayout.swift @@ -1,5 +1,5 @@ // -// BaseLayout.swift +// DisplaySwitchLayout.swift // YALLayoutTransitioning // // Created by Roman on 29.02.16. @@ -8,36 +8,37 @@ import UIKit -private let listLayoutCountOfColumns = 1 -private let gridLayoutCountOfColumns = 3 +private let ListLayoutCountOfColumns = 1 +private let GridLayoutCountOfColumns = 3 + +public enum LayoutState { + + case list, grid -public enum CollectionViewLayoutState { - case ListLayoutState - case GridLayoutState } -public class BaseLayout: UICollectionViewLayout { +open class DisplaySwitchLayout: UICollectionViewLayout { - private let numberOfColumns: Int - private let cellPadding: CGFloat = 6.0 - private let staticCellHeight: CGFloat - private let nextLayoutStaticCellHeight: CGFloat - private var previousContentOffset: NSValue? - private var layoutState: CollectionViewLayoutState + fileprivate let numberOfColumns: Int + fileprivate let cellPadding: CGFloat = 6.0 + fileprivate let staticCellHeight: CGFloat + fileprivate let nextLayoutStaticCellHeight: CGFloat + fileprivate var previousContentOffset: NSValue? + fileprivate var layoutState: LayoutState - private var baseLayoutAttributes: [BaseLayoutAttributes]! + fileprivate var baseLayoutAttributes: [DisplaySwitchLayoutAttributes]! - private var contentHeight: CGFloat = 0.0 - private var contentWidth: CGFloat { + fileprivate var contentHeight: CGFloat = 0.0 + fileprivate var contentWidth: CGFloat { let insets = collectionView!.contentInset return collectionView!.bounds.width - insets.left - insets.right } // MARK: - Lifecycle - public init(staticCellHeight: CGFloat, nextLayoutStaticCellHeight: CGFloat, layoutState: CollectionViewLayoutState) { + public init(staticCellHeight: CGFloat, nextLayoutStaticCellHeight: CGFloat, layoutState: LayoutState) { self.staticCellHeight = staticCellHeight - self.numberOfColumns = (layoutState == .ListLayoutState) ? listLayoutCountOfColumns : gridLayoutCountOfColumns + self.numberOfColumns = layoutState == .list ? ListLayoutCountOfColumns : GridLayoutCountOfColumns self.layoutState = layoutState self.nextLayoutStaticCellHeight = nextLayoutStaticCellHeight @@ -50,10 +51,10 @@ public class BaseLayout: UICollectionViewLayout { // MARK: - UICollectionViewLayout - override public func prepareLayout() { - super.prepareLayout() + override open func prepare() { + super.prepare() - baseLayoutAttributes = [BaseLayoutAttributes]() + baseLayoutAttributes = [DisplaySwitchLayoutAttributes]() // cells layout contentHeight = 0 @@ -63,53 +64,48 @@ public class BaseLayout: UICollectionViewLayout { xOffsets.append(CGFloat(column) * columnWidth) } var column = 0 - var yOffset = [CGFloat](count: numberOfColumns, repeatedValue: contentHeight) - for item in 0 ..< collectionView!.numberOfItemsInSection(0) { - let indexPath = NSIndexPath(forItem: item, inSection: 0) + var yOffset = [CGFloat](repeating: contentHeight, count: numberOfColumns) + for item in 0 ..< collectionView!.numberOfItems(inSection: 0) { + let indexPath = IndexPath(item: item, section: 0) let height = cellPadding + staticCellHeight let frame = CGRect(x: xOffsets[column], y: yOffset[column], width: columnWidth, height: height) - let insetFrame = CGRectInset(frame, cellPadding, cellPadding) - let attributes = BaseLayoutAttributes(forCellWithIndexPath: indexPath) + let insetFrame = frame.insetBy(dx: cellPadding, dy: cellPadding) + let attributes = DisplaySwitchLayoutAttributes(forCellWith: indexPath) attributes.frame = insetFrame baseLayoutAttributes.append(attributes) - contentHeight = max(contentHeight, CGRectGetMaxY(frame)) + contentHeight = max(contentHeight, frame.maxY) yOffset[column] = yOffset[column] + height column = column == (numberOfColumns - 1) ? 0 : column + 1 } } - override public func collectionViewContentSize() -> CGSize { + override open var collectionViewContentSize: CGSize { return CGSize(width: contentWidth, height: contentHeight) } - override public func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? { - var layoutAttributes = [UICollectionViewLayoutAttributes]() - for attributes in baseLayoutAttributes { - if CGRectIntersectsRect(attributes.frame, rect) { - layoutAttributes.append(attributes) - } - } + override open func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { + let layoutAttributes = baseLayoutAttributes.filter { $0.frame.intersects(rect) } return layoutAttributes } - override public func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { + override open func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { return baseLayoutAttributes[indexPath.row] } - override public class func layoutAttributesClass() -> AnyClass { - return BaseLayoutAttributes.self + override open class var layoutAttributesClass: AnyClass { + return DisplaySwitchLayoutAttributes.self } // Fix bug with content offset - override public func targetContentOffsetForProposedContentOffset(proposedContentOffset: CGPoint) -> CGPoint { - let previousContentOffsetPoint = previousContentOffset?.CGPointValue() - let superContentOffset = super.targetContentOffsetForProposedContentOffset(proposedContentOffset) + override open func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint) -> CGPoint { + let previousContentOffsetPoint = previousContentOffset?.cgPointValue + let superContentOffset = super.targetContentOffset(forProposedContentOffset: proposedContentOffset) if let previousContentOffsetPoint = previousContentOffsetPoint { if previousContentOffsetPoint.y == 0 { return previousContentOffsetPoint } - if layoutState == CollectionViewLayoutState.ListLayoutState { + if layoutState == LayoutState.list { let offsetY = ceil(previousContentOffsetPoint.y + (staticCellHeight * previousContentOffsetPoint.y / nextLayoutStaticCellHeight) + cellPadding) return CGPoint(x: superContentOffset.x, y: offsetY) } else { @@ -122,13 +118,13 @@ public class BaseLayout: UICollectionViewLayout { return superContentOffset } - override public func prepareForTransitionFromLayout(oldLayout: UICollectionViewLayout) { - previousContentOffset = NSValue(CGPoint:collectionView!.contentOffset) + override open func prepareForTransition(from oldLayout: UICollectionViewLayout) { + previousContentOffset = NSValue(cgPoint: collectionView!.contentOffset) - return super.prepareForTransitionFromLayout(oldLayout) + return super.prepareForTransition(from: oldLayout) } - override public func finalizeLayoutTransition() { + override open func finalizeLayoutTransition() { previousContentOffset = nil super.finalizeLayoutTransition() diff --git a/Pod/Classes/Layouts/DisplaySwitchLayoutAttributes.swift b/Pod/Classes/Layouts/DisplaySwitchLayoutAttributes.swift new file mode 100644 index 0000000..c9568be --- /dev/null +++ b/Pod/Classes/Layouts/DisplaySwitchLayoutAttributes.swift @@ -0,0 +1,32 @@ +// +// DisplaySwitchLayoutAttributes.swift +// YALLayoutTransitioning +// +// Created by Roman on 09.03.16. +// Copyright © 2016 Yalantis. All rights reserved. +// + +import UIKit + +open class DisplaySwitchLayoutAttributes: UICollectionViewLayoutAttributes { + + open var transitionProgress: CGFloat = 0.0 + open var nextLayoutCellFrame: CGRect = .zero + open var layoutState: LayoutState = .list + + override open func copy(with zone: NSZone?) -> Any { + let copy = super.copy(with: zone) as! DisplaySwitchLayoutAttributes + copy.transitionProgress = transitionProgress + copy.nextLayoutCellFrame = nextLayoutCellFrame + copy.layoutState = layoutState + + return copy + } + + override open func isEqual(_ object: Any?) -> Bool { + guard let attributes = object as? DisplaySwitchLayoutAttributes else { return false } + guard attributes.transitionProgress == transitionProgress && nextLayoutCellFrame == nextLayoutCellFrame && layoutState == layoutState else { return false } + + return super.isEqual(object) + } +} diff --git a/Pod/Classes/TransitionLayout/TransitionLayout.swift b/Pod/Classes/TransitionLayout/TransitionLayout.swift index bf91385..a7582e9 100644 --- a/Pod/Classes/TransitionLayout/TransitionLayout.swift +++ b/Pod/Classes/TransitionLayout/TransitionLayout.swift @@ -8,39 +8,25 @@ import UIKit -public class TransitionLayout: UICollectionViewTransitionLayout { +open class TransitionLayout: UICollectionViewTransitionLayout { - var layoutState: CollectionViewLayoutState? + var layoutState: LayoutState? - // MARK: - UICollectionViewLayout - override public func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? { - let currentAttributes = super.layoutAttributesForElementsInRect(rect)! - let nextAttributes = nextLayout.layoutAttributesForElementsInRect(rect) - for index in 0.. index { - if let nextLayoutAttributes = nextAttributes![index] as? BaseLayoutAttributes { - currentLayoutAttributes.nextLayoutCellFrame = nextLayoutAttributes.frame - } - } - } - } + override open func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { + let currentAttributes = super.layoutAttributesForElements(in: rect)! + setupNextLayout(with: currentAttributes, in: rect) return currentAttributes } - override public func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { - let attributes = super.layoutAttributesForItemAtIndexPath(indexPath) - if let layoutAttributes = attributes as? BaseLayoutAttributes { + override open func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { + let attributes = super.layoutAttributesForItem(at: indexPath) + if let layoutAttributes = attributes as? DisplaySwitchLayoutAttributes { layoutAttributes.transitionProgress = transitionProgress if let layoutState = layoutState { layoutAttributes.layoutState = layoutState } - if let nextLayoutAttributes = nextLayout.layoutAttributesForItemAtIndexPath(indexPath) as? BaseLayoutAttributes { + if let nextLayoutAttributes = nextLayout.layoutAttributesForItem(at: indexPath) as? DisplaySwitchLayoutAttributes { layoutAttributes.nextLayoutCellFrame = nextLayoutAttributes.frame } } @@ -49,3 +35,24 @@ public class TransitionLayout: UICollectionViewTransitionLayout { } } + +fileprivate extension TransitionLayout { + + func setupNextLayout(with currentAttributes: [UICollectionViewLayoutAttributes], `in` rect: CGRect) { + let nextAttributes = nextLayout.layoutAttributesForElements(in: rect) + for index in 0.. index { + if let nextLayoutAttributes = nextAttributes[index] as? DisplaySwitchLayoutAttributes { + currentLayoutAttributes.nextLayoutCellFrame = nextLayoutAttributes.frame + } + } + } + } + } + +} diff --git a/Pod/Classes/TransitionManager/TransitionManager.swift b/Pod/Classes/TransitionManager/TransitionManager.swift index 0697cd4..885b86b 100644 --- a/Pod/Classes/TransitionManager/TransitionManager.swift +++ b/Pod/Classes/TransitionManager/TransitionManager.swift @@ -10,55 +10,57 @@ import UIKit private let finishTransitionValue = 1.0 -public class TransitionManager { +open class TransitionManager { - private var duration: NSTimeInterval - private var collectionView: UICollectionView - private var destinationLayout: UICollectionViewLayout - private var layoutState: CollectionViewLayoutState - private var transitionLayout: TransitionLayout! - private var updater: CADisplayLink! - private var start: NSTimeInterval! + fileprivate let duration: TimeInterval + fileprivate let collectionView: UICollectionView + fileprivate let destinationLayout: UICollectionViewLayout + fileprivate let layoutState: LayoutState + fileprivate var transitionLayout: TransitionLayout! + fileprivate var updater: CADisplayLink! + fileprivate var startTime: TimeInterval! - // MARK: - Lifecycle - public init(duration: NSTimeInterval, collectionView: UICollectionView, destinationLayout: UICollectionViewLayout, layoutState: CollectionViewLayoutState) { + public init(duration: TimeInterval, collectionView: UICollectionView, destinationLayout: UICollectionViewLayout, layoutState: LayoutState) { self.collectionView = collectionView self.destinationLayout = destinationLayout self.layoutState = layoutState self.duration = duration } - // MARK: - Public methods - public func startInteractiveTransition() { - UIApplication.sharedApplication().beginIgnoringInteractionEvents() - transitionLayout = collectionView.startInteractiveTransitionToCollectionViewLayout(destinationLayout, completion: { success, finish in + open func startInteractiveTransition() { + UIApplication.shared.beginIgnoringInteractionEvents() + transitionLayout = collectionView.startInteractiveTransition(to: destinationLayout) { success, finish in if success && finish { self.collectionView.reloadData() - UIApplication.sharedApplication().endIgnoringInteractionEvents() + UIApplication.shared.endIgnoringInteractionEvents() } - }) as! TransitionLayout + } as! TransitionLayout transitionLayout.layoutState = layoutState createUpdaterAndStart() } - // MARK: - Private methods - private func createUpdaterAndStart() { - start = CACurrentMediaTime() +} + +fileprivate extension TransitionManager { + + func createUpdaterAndStart() { + startTime = CACurrentMediaTime() updater = CADisplayLink(target: self, selector: #selector(updateTransitionProgress)) updater.frameInterval = 1 - updater.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes) + updater.add(to: RunLoop.current, forMode: .commonModes) } dynamic func updateTransitionProgress() { - var progress = (updater.timestamp - start) / duration + var progress = (updater.timestamp - startTime) / duration progress = min(1, progress) progress = max(0, progress) transitionLayout.transitionProgress = CGFloat(progress) - + transitionLayout.invalidateLayout() if progress == finishTransitionValue { collectionView.finishInteractiveTransition() updater.invalidate() } } -} \ No newline at end of file + +} diff --git a/Pod/Classes/Views/RotationButton/RotationButton.swift b/Pod/Classes/Views/SwitchLayoutButton.swift similarity index 61% rename from Pod/Classes/Views/RotationButton/RotationButton.swift rename to Pod/Classes/Views/SwitchLayoutButton.swift index 46c9240..df964e9 100644 --- a/Pod/Classes/Views/RotationButton/RotationButton.swift +++ b/Pod/Classes/Views/SwitchLayoutButton.swift @@ -1,5 +1,5 @@ // -// RotationButton.swift +// SwitchLayoutButton.swift // YALLayoutTransitioning // // Created by Roman on 02.03.16. @@ -15,39 +15,37 @@ private let gridLineWidth: CGFloat = 4.0 private let listLineWidth: CGFloat = 2.0 private let stepHeightDelta: CGFloat = 0.3 - private let itemsCount: Int = 6 -public class RotationButton: UIButton { +open class SwitchLayoutButton: UIButton { + + open var animationDuration: TimeInterval = 0.25 - @IBInspectable var lineColor: UIColor = .greenColor() + @IBInspectable open var lineColor: UIColor = .green - private let lineLayer1 = CAShapeLayer() - private let lineLayer2 = CAShapeLayer() - private let lineLayer3 = CAShapeLayer() - private let lineLayer4 = CAShapeLayer() - private let lineLayer5 = CAShapeLayer() - private let lineLayer6 = CAShapeLayer() + fileprivate let lineLayer1 = CAShapeLayer() + fileprivate let lineLayer2 = CAShapeLayer() + fileprivate let lineLayer3 = CAShapeLayer() + fileprivate let lineLayer4 = CAShapeLayer() + fileprivate let lineLayer5 = CAShapeLayer() + fileprivate let lineLayer6 = CAShapeLayer() - private let lineLayers: [CAShapeLayer] = { + fileprivate let lineLayers: [CAShapeLayer] = { var lineLayers = [CAShapeLayer]() for index in 0..project on dribbble. @@ -12,31 +14,27 @@ Check this p Also, read how it was done in [our blog](https://yalantis.com/blog/contact-display-switch-animation/) ##Requirements -- iOS 8.0+ (for component), iOS 9.0+ (for example) -- Xcode 7 -- Swift 2 +- iOS 8.0+ +- Xcode 8 +- Swift 3 ##Installing with [CocoaPods](https://cocoapods.org) ```ruby use_frameworks! -pod ‘DisplaySwitcher’, '~> 0.1.1’ -``` - -##Installing with [Carthage](https://github.com/Carthage/Carthage) - -```ruby -github "Yalantis/DisplaySwitcher" ~> 0.1.0 +pod ‘DisplaySwitcher’, '~> 1.0’ ``` ##Usage At first, import DisplaySwitcher: + ```swift import DisplaySwitcher ``` -Then create two layouts (layout for list mode and grid mode): +Then create two layouts (list mode and grid mode): + ```swift private lazy var listLayout = BaseLayout(staticCellHeight: listLayoutStaticCellHeight, nextLayoutStaticCellHeight: gridLayoutStaticCellHeight, layoutState: .ListLayoutState) @@ -44,12 +42,14 @@ private lazy var gridLayout = BaseLayout(staticCellHeight: gridLayoutStaticCellH ``` Set current layout: + ```swift private var layoutState: CollectionViewLayoutState = .ListLayoutState collectionView.collectionViewLayout = listLayout ``` Then override two UICollectionViewDataSource methods: + ```swift func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { // count of items @@ -61,13 +61,16 @@ func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath ind ``` Also override one UICollectionViewDelegate method (for custom layout transition): + ```swift func collectionView(collectionView: UICollectionView, transitionLayoutForOldLayout fromLayout: UICollectionViewLayout, newLayout toLayout: UICollectionViewLayout) -> UICollectionViewTransitionLayout { let customTransitionLayout = TransitionLayout(currentLayout: fromLayout, nextLayout: toLayout) return customTransitionLayout } ``` + And in the end necessary create transition and start it (you can simply change animation duration for transition layout and for rotation button): + ```swift let transitionManager: TransitionManager if layoutState == .ListLayoutState { @@ -113,4 +116,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -