├── .gitignore ├── CLWaterWaveView.podspec ├── Example ├── CLWaterWaveView.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── CLWaterWaveView-Example.xcscheme ├── CLWaterWaveView.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── CLWaterWaveView │ ├── AppDelegate.swift │ ├── Base.lproj │ │ ├── LaunchScreen.xib │ │ └── Main.storyboard │ ├── CrossroadsViewController.swift │ ├── IBFabric.swift │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ ├── CFcfczo.png │ │ │ ├── Contents.json │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x-1.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x-1.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x-1.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ └── Icon-App-83.5x83.5@2x.png │ ├── Info.plist │ ├── InterfaceBuilderExampleViewController.swift │ ├── NavigationController.swift │ ├── TwoWavesViewController.swift │ └── WaveSliderHelper.swift ├── Podfile ├── Podfile.lock └── Pods │ ├── Local Podspecs │ └── CLWaterWaveView.podspec.json │ ├── Manifest.lock │ ├── Pods.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── Target Support Files │ ├── CLWaterWaveView │ ├── CLWaterWaveView-dummy.m │ ├── CLWaterWaveView-prefix.pch │ ├── CLWaterWaveView-umbrella.h │ ├── CLWaterWaveView.modulemap │ ├── CLWaterWaveView.xcconfig │ └── Info.plist │ └── Pods-CLWaterWaveView_Example │ ├── Info.plist │ ├── Pods-CLWaterWaveView_Example-acknowledgements.markdown │ ├── Pods-CLWaterWaveView_Example-acknowledgements.plist │ ├── Pods-CLWaterWaveView_Example-dummy.m │ ├── Pods-CLWaterWaveView_Example-frameworks.sh │ ├── Pods-CLWaterWaveView_Example-resources.sh │ ├── Pods-CLWaterWaveView_Example-umbrella.h │ ├── Pods-CLWaterWaveView_Example.debug.xcconfig │ ├── Pods-CLWaterWaveView_Example.modulemap │ └── Pods-CLWaterWaveView_Example.release.xcconfig ├── LICENSE ├── README.md ├── Sources ├── CLWaterWaveModel+Defaults.swift ├── CLWaterWaveModel.swift ├── CLWaterWaveModelDelegate.swift └── CLWaterWaveView.swift ├── _Pods.xcodeproj ├── attributes_inspector.png ├── demo.gif ├── icon.png └── intro.gif /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata/ 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 26 | # Carthage/Checkouts 27 | 28 | Carthage/Build 29 | 30 | # We recommend against adding the Pods directory to your .gitignore. However 31 | # you should judge for yourself, the pros and cons are mentioned at: 32 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 33 | # 34 | # Note: if you ignore the Pods directory, make sure to uncomment 35 | # `pod install` in .travis.yml 36 | # 37 | # Pods/ 38 | -------------------------------------------------------------------------------- /CLWaterWaveView.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = 'CLWaterWaveView' 3 | s.version = '1.2' 4 | s.summary = 'Water Wave Effect on iOS' 5 | 6 | s.description = <<-DESC 7 | A UIView what able to show water wave effect 8 | DESC 9 | 10 | s.homepage = 'https://github.com/cristi-lupu/CLWaterWaveView' 11 | s.license = { :type => 'MIT', :file => 'LICENSE' } 12 | s.author = { 'Cristian Lupu' => 'lupucristiancptc@gmail.com' } 13 | s.source = { :git => 'https://github.com/cristiLupu/CLWaterWaveView.git', :tag => '1.2' } 14 | s.social_media_url = 'https://twitter.com/LupuCrist' 15 | 16 | s.ios.deployment_target = '9.0' 17 | s.swift_version = '4.2' 18 | 19 | s.source_files = 'Sources/**/*' 20 | 21 | end 22 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; }; 11 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; }; 12 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; 13 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; 14 | BB5BC3152027362800B12D20 /* CrossroadsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB5BC3142027362800B12D20 /* CrossroadsViewController.swift */; }; 15 | BB5BC3172027381200B12D20 /* InterfaceBuilderExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB5BC3162027381200B12D20 /* InterfaceBuilderExampleViewController.swift */; }; 16 | BB5BC31B2027387400B12D20 /* TwoWavesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB5BC31A2027387400B12D20 /* TwoWavesViewController.swift */; }; 17 | BB5BC31D2027428400B12D20 /* IBFabric.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB5BC31C2027428400B12D20 /* IBFabric.swift */; }; 18 | BB5BC31F2027438C00B12D20 /* WaveSliderHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB5BC31E2027438C00B12D20 /* WaveSliderHelper.swift */; }; 19 | DCEDE2FD030636F5CBE76AEC /* Pods_CLWaterWaveView_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90EFE2744802C4C4F1CF08D2 /* Pods_CLWaterWaveView_Example.framework */; }; 20 | F52984922171CF04000AFF49 /* NavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F52984912171CF04000AFF49 /* NavigationController.swift */; }; 21 | /* End PBXBuildFile section */ 22 | 23 | /* Begin PBXFileReference section */ 24 | 019B3BAC94EEFF43EF3F2A23 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 25 | 1A6B8A8E67FA1735FAC1621D /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 26 | 5D92D11C88D887BA45784407 /* CLWaterWaveView.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = CLWaterWaveView.podspec; path = ../CLWaterWaveView.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 27 | 607FACD01AFB9204008FA782 /* CLWaterWaveView_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CLWaterWaveView_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 28 | 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 29 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 30 | 607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 31 | 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 32 | 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 33 | 90EFE2744802C4C4F1CF08D2 /* Pods_CLWaterWaveView_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CLWaterWaveView_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 34 | 93A501ABD14A52A351D42472 /* Pods-CLWaterWaveView_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CLWaterWaveView_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example.release.xcconfig"; sourceTree = ""; }; 35 | 9A58BB3D4BBA185FBF62EF1E /* Pods-CLWaterWaveView_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CLWaterWaveView_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-CLWaterWaveView_Tests/Pods-CLWaterWaveView_Tests.debug.xcconfig"; sourceTree = ""; }; 36 | A1A7C78F8CF8325B40925F00 /* Pods_CLWaterWaveView_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CLWaterWaveView_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 37 | AA30EE02D70D1036C9EBC121 /* Pods-CLWaterWaveView_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CLWaterWaveView_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example.debug.xcconfig"; sourceTree = ""; }; 38 | BB5BC3142027362800B12D20 /* CrossroadsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrossroadsViewController.swift; sourceTree = ""; }; 39 | BB5BC3162027381200B12D20 /* InterfaceBuilderExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InterfaceBuilderExampleViewController.swift; sourceTree = ""; }; 40 | BB5BC31A2027387400B12D20 /* TwoWavesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwoWavesViewController.swift; sourceTree = ""; }; 41 | BB5BC31C2027428400B12D20 /* IBFabric.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IBFabric.swift; sourceTree = ""; }; 42 | BB5BC31E2027438C00B12D20 /* WaveSliderHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaveSliderHelper.swift; sourceTree = ""; }; 43 | CEDE655809C9ED3BA83D6CEC /* Pods-CLWaterWaveView_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CLWaterWaveView_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-CLWaterWaveView_Tests/Pods-CLWaterWaveView_Tests.release.xcconfig"; sourceTree = ""; }; 44 | F52984912171CF04000AFF49 /* NavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationController.swift; sourceTree = ""; }; 45 | /* End PBXFileReference section */ 46 | 47 | /* Begin PBXFrameworksBuildPhase section */ 48 | 607FACCD1AFB9204008FA782 /* Frameworks */ = { 49 | isa = PBXFrameworksBuildPhase; 50 | buildActionMask = 2147483647; 51 | files = ( 52 | DCEDE2FD030636F5CBE76AEC /* Pods_CLWaterWaveView_Example.framework in Frameworks */, 53 | ); 54 | runOnlyForDeploymentPostprocessing = 0; 55 | }; 56 | /* End PBXFrameworksBuildPhase section */ 57 | 58 | /* Begin PBXGroup section */ 59 | 607FACC71AFB9204008FA782 = { 60 | isa = PBXGroup; 61 | children = ( 62 | 607FACF51AFB993E008FA782 /* Podspec Metadata */, 63 | 607FACD21AFB9204008FA782 /* Example for CLWaterWaveView */, 64 | 607FACD11AFB9204008FA782 /* Products */, 65 | BD09B336A3DFAFDDAA9FC49B /* Pods */, 66 | 8E7C6F4A7F4FFE393F483C79 /* Frameworks */, 67 | ); 68 | sourceTree = ""; 69 | }; 70 | 607FACD11AFB9204008FA782 /* Products */ = { 71 | isa = PBXGroup; 72 | children = ( 73 | 607FACD01AFB9204008FA782 /* CLWaterWaveView_Example.app */, 74 | ); 75 | name = Products; 76 | sourceTree = ""; 77 | }; 78 | 607FACD21AFB9204008FA782 /* Example for CLWaterWaveView */ = { 79 | isa = PBXGroup; 80 | children = ( 81 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */, 82 | BB5BC322202743B000B12D20 /* Resources */, 83 | BB5BC3212027439A00B12D20 /* View Controllers */, 84 | BB5BC3202027438F00B12D20 /* Helpers */, 85 | 607FACD91AFB9204008FA782 /* Main.storyboard */, 86 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, 87 | 607FACD31AFB9204008FA782 /* Supporting Files */, 88 | ); 89 | name = "Example for CLWaterWaveView"; 90 | path = CLWaterWaveView; 91 | sourceTree = ""; 92 | }; 93 | 607FACD31AFB9204008FA782 /* Supporting Files */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | 607FACD41AFB9204008FA782 /* Info.plist */, 97 | ); 98 | name = "Supporting Files"; 99 | sourceTree = ""; 100 | }; 101 | 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { 102 | isa = PBXGroup; 103 | children = ( 104 | 5D92D11C88D887BA45784407 /* CLWaterWaveView.podspec */, 105 | 019B3BAC94EEFF43EF3F2A23 /* README.md */, 106 | 1A6B8A8E67FA1735FAC1621D /* LICENSE */, 107 | ); 108 | name = "Podspec Metadata"; 109 | sourceTree = ""; 110 | }; 111 | 8E7C6F4A7F4FFE393F483C79 /* Frameworks */ = { 112 | isa = PBXGroup; 113 | children = ( 114 | 90EFE2744802C4C4F1CF08D2 /* Pods_CLWaterWaveView_Example.framework */, 115 | A1A7C78F8CF8325B40925F00 /* Pods_CLWaterWaveView_Tests.framework */, 116 | ); 117 | name = Frameworks; 118 | sourceTree = ""; 119 | }; 120 | BB5BC3202027438F00B12D20 /* Helpers */ = { 121 | isa = PBXGroup; 122 | children = ( 123 | BB5BC31C2027428400B12D20 /* IBFabric.swift */, 124 | BB5BC31E2027438C00B12D20 /* WaveSliderHelper.swift */, 125 | ); 126 | name = Helpers; 127 | sourceTree = ""; 128 | }; 129 | BB5BC3212027439A00B12D20 /* View Controllers */ = { 130 | isa = PBXGroup; 131 | children = ( 132 | F52984912171CF04000AFF49 /* NavigationController.swift */, 133 | BB5BC3142027362800B12D20 /* CrossroadsViewController.swift */, 134 | BB5BC3162027381200B12D20 /* InterfaceBuilderExampleViewController.swift */, 135 | BB5BC31A2027387400B12D20 /* TwoWavesViewController.swift */, 136 | ); 137 | name = "View Controllers"; 138 | sourceTree = ""; 139 | }; 140 | BB5BC322202743B000B12D20 /* Resources */ = { 141 | isa = PBXGroup; 142 | children = ( 143 | 607FACDC1AFB9204008FA782 /* Images.xcassets */, 144 | ); 145 | name = Resources; 146 | sourceTree = ""; 147 | }; 148 | BD09B336A3DFAFDDAA9FC49B /* Pods */ = { 149 | isa = PBXGroup; 150 | children = ( 151 | AA30EE02D70D1036C9EBC121 /* Pods-CLWaterWaveView_Example.debug.xcconfig */, 152 | 93A501ABD14A52A351D42472 /* Pods-CLWaterWaveView_Example.release.xcconfig */, 153 | 9A58BB3D4BBA185FBF62EF1E /* Pods-CLWaterWaveView_Tests.debug.xcconfig */, 154 | CEDE655809C9ED3BA83D6CEC /* Pods-CLWaterWaveView_Tests.release.xcconfig */, 155 | ); 156 | name = Pods; 157 | sourceTree = ""; 158 | }; 159 | /* End PBXGroup section */ 160 | 161 | /* Begin PBXNativeTarget section */ 162 | 607FACCF1AFB9204008FA782 /* CLWaterWaveView_Example */ = { 163 | isa = PBXNativeTarget; 164 | buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "CLWaterWaveView_Example" */; 165 | buildPhases = ( 166 | CAF05A685BA4E8C3D4AACC30 /* [CP] Check Pods Manifest.lock */, 167 | 607FACCC1AFB9204008FA782 /* Sources */, 168 | 607FACCD1AFB9204008FA782 /* Frameworks */, 169 | 607FACCE1AFB9204008FA782 /* Resources */, 170 | CF382590894401D2B4AE497C /* [CP] Embed Pods Frameworks */, 171 | ); 172 | buildRules = ( 173 | ); 174 | dependencies = ( 175 | ); 176 | name = CLWaterWaveView_Example; 177 | productName = CLWaterWaveView; 178 | productReference = 607FACD01AFB9204008FA782 /* CLWaterWaveView_Example.app */; 179 | productType = "com.apple.product-type.application"; 180 | }; 181 | /* End PBXNativeTarget section */ 182 | 183 | /* Begin PBXProject section */ 184 | 607FACC81AFB9204008FA782 /* Project object */ = { 185 | isa = PBXProject; 186 | attributes = { 187 | LastSwiftUpdateCheck = 0830; 188 | LastUpgradeCheck = 0930; 189 | ORGANIZATIONNAME = CocoaPods; 190 | TargetAttributes = { 191 | 607FACCF1AFB9204008FA782 = { 192 | CreatedOnToolsVersion = 6.3.1; 193 | DevelopmentTeam = AT3P3UCMEJ; 194 | LastSwiftMigration = 0900; 195 | }; 196 | }; 197 | }; 198 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "CLWaterWaveView" */; 199 | compatibilityVersion = "Xcode 3.2"; 200 | developmentRegion = English; 201 | hasScannedForEncodings = 0; 202 | knownRegions = ( 203 | en, 204 | Base, 205 | ); 206 | mainGroup = 607FACC71AFB9204008FA782; 207 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */; 208 | projectDirPath = ""; 209 | projectRoot = ""; 210 | targets = ( 211 | 607FACCF1AFB9204008FA782 /* CLWaterWaveView_Example */, 212 | ); 213 | }; 214 | /* End PBXProject section */ 215 | 216 | /* Begin PBXResourcesBuildPhase section */ 217 | 607FACCE1AFB9204008FA782 /* Resources */ = { 218 | isa = PBXResourcesBuildPhase; 219 | buildActionMask = 2147483647; 220 | files = ( 221 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */, 222 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, 223 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */, 224 | ); 225 | runOnlyForDeploymentPostprocessing = 0; 226 | }; 227 | /* End PBXResourcesBuildPhase section */ 228 | 229 | /* Begin PBXShellScriptBuildPhase section */ 230 | CAF05A685BA4E8C3D4AACC30 /* [CP] Check Pods Manifest.lock */ = { 231 | isa = PBXShellScriptBuildPhase; 232 | buildActionMask = 2147483647; 233 | files = ( 234 | ); 235 | inputPaths = ( 236 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 237 | "${PODS_ROOT}/Manifest.lock", 238 | ); 239 | name = "[CP] Check Pods Manifest.lock"; 240 | outputPaths = ( 241 | "$(DERIVED_FILE_DIR)/Pods-CLWaterWaveView_Example-checkManifestLockResult.txt", 242 | ); 243 | runOnlyForDeploymentPostprocessing = 0; 244 | shellPath = /bin/sh; 245 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 246 | showEnvVarsInLog = 0; 247 | }; 248 | CF382590894401D2B4AE497C /* [CP] Embed Pods Frameworks */ = { 249 | isa = PBXShellScriptBuildPhase; 250 | buildActionMask = 2147483647; 251 | files = ( 252 | ); 253 | inputPaths = ( 254 | "${SRCROOT}/Pods/Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example-frameworks.sh", 255 | "${BUILT_PRODUCTS_DIR}/CLWaterWaveView/CLWaterWaveView.framework", 256 | ); 257 | name = "[CP] Embed Pods Frameworks"; 258 | outputPaths = ( 259 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CLWaterWaveView.framework", 260 | ); 261 | runOnlyForDeploymentPostprocessing = 0; 262 | shellPath = /bin/sh; 263 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example-frameworks.sh\"\n"; 264 | showEnvVarsInLog = 0; 265 | }; 266 | /* End PBXShellScriptBuildPhase section */ 267 | 268 | /* Begin PBXSourcesBuildPhase section */ 269 | 607FACCC1AFB9204008FA782 /* Sources */ = { 270 | isa = PBXSourcesBuildPhase; 271 | buildActionMask = 2147483647; 272 | files = ( 273 | BB5BC31D2027428400B12D20 /* IBFabric.swift in Sources */, 274 | BB5BC3152027362800B12D20 /* CrossroadsViewController.swift in Sources */, 275 | BB5BC31F2027438C00B12D20 /* WaveSliderHelper.swift in Sources */, 276 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, 277 | BB5BC3172027381200B12D20 /* InterfaceBuilderExampleViewController.swift in Sources */, 278 | F52984922171CF04000AFF49 /* NavigationController.swift in Sources */, 279 | BB5BC31B2027387400B12D20 /* TwoWavesViewController.swift in Sources */, 280 | ); 281 | runOnlyForDeploymentPostprocessing = 0; 282 | }; 283 | /* End PBXSourcesBuildPhase section */ 284 | 285 | /* Begin PBXVariantGroup section */ 286 | 607FACD91AFB9204008FA782 /* Main.storyboard */ = { 287 | isa = PBXVariantGroup; 288 | children = ( 289 | 607FACDA1AFB9204008FA782 /* Base */, 290 | ); 291 | name = Main.storyboard; 292 | sourceTree = ""; 293 | }; 294 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = { 295 | isa = PBXVariantGroup; 296 | children = ( 297 | 607FACDF1AFB9204008FA782 /* Base */, 298 | ); 299 | name = LaunchScreen.xib; 300 | sourceTree = ""; 301 | }; 302 | /* End PBXVariantGroup section */ 303 | 304 | /* Begin XCBuildConfiguration section */ 305 | 607FACED1AFB9204008FA782 /* Debug */ = { 306 | isa = XCBuildConfiguration; 307 | buildSettings = { 308 | ALWAYS_SEARCH_USER_PATHS = NO; 309 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 310 | CLANG_CXX_LIBRARY = "libc++"; 311 | CLANG_ENABLE_MODULES = YES; 312 | CLANG_ENABLE_OBJC_ARC = YES; 313 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 314 | CLANG_WARN_BOOL_CONVERSION = YES; 315 | CLANG_WARN_COMMA = YES; 316 | CLANG_WARN_CONSTANT_CONVERSION = YES; 317 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 318 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 319 | CLANG_WARN_EMPTY_BODY = YES; 320 | CLANG_WARN_ENUM_CONVERSION = YES; 321 | CLANG_WARN_INFINITE_RECURSION = YES; 322 | CLANG_WARN_INT_CONVERSION = YES; 323 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 324 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 325 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 326 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 327 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 328 | CLANG_WARN_STRICT_PROTOTYPES = YES; 329 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 330 | CLANG_WARN_UNREACHABLE_CODE = YES; 331 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 332 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 333 | COPY_PHASE_STRIP = NO; 334 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 335 | ENABLE_STRICT_OBJC_MSGSEND = YES; 336 | ENABLE_TESTABILITY = YES; 337 | GCC_C_LANGUAGE_STANDARD = gnu99; 338 | GCC_DYNAMIC_NO_PIC = NO; 339 | GCC_NO_COMMON_BLOCKS = YES; 340 | GCC_OPTIMIZATION_LEVEL = 0; 341 | GCC_PREPROCESSOR_DEFINITIONS = ( 342 | "DEBUG=1", 343 | "$(inherited)", 344 | ); 345 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 346 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 347 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 348 | GCC_WARN_UNDECLARED_SELECTOR = YES; 349 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 350 | GCC_WARN_UNUSED_FUNCTION = YES; 351 | GCC_WARN_UNUSED_VARIABLE = YES; 352 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 353 | MTL_ENABLE_DEBUG_INFO = YES; 354 | ONLY_ACTIVE_ARCH = YES; 355 | SDKROOT = iphoneos; 356 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 357 | SWIFT_VERSION = 4.2; 358 | }; 359 | name = Debug; 360 | }; 361 | 607FACEE1AFB9204008FA782 /* Release */ = { 362 | isa = XCBuildConfiguration; 363 | buildSettings = { 364 | ALWAYS_SEARCH_USER_PATHS = NO; 365 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 366 | CLANG_CXX_LIBRARY = "libc++"; 367 | CLANG_ENABLE_MODULES = YES; 368 | CLANG_ENABLE_OBJC_ARC = YES; 369 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 370 | CLANG_WARN_BOOL_CONVERSION = YES; 371 | CLANG_WARN_COMMA = YES; 372 | CLANG_WARN_CONSTANT_CONVERSION = YES; 373 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 374 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 375 | CLANG_WARN_EMPTY_BODY = YES; 376 | CLANG_WARN_ENUM_CONVERSION = YES; 377 | CLANG_WARN_INFINITE_RECURSION = YES; 378 | CLANG_WARN_INT_CONVERSION = YES; 379 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 380 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 381 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 382 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 383 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 384 | CLANG_WARN_STRICT_PROTOTYPES = YES; 385 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 386 | CLANG_WARN_UNREACHABLE_CODE = YES; 387 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 388 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 389 | COPY_PHASE_STRIP = NO; 390 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 391 | ENABLE_NS_ASSERTIONS = NO; 392 | ENABLE_STRICT_OBJC_MSGSEND = YES; 393 | GCC_C_LANGUAGE_STANDARD = gnu99; 394 | GCC_NO_COMMON_BLOCKS = YES; 395 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 396 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 397 | GCC_WARN_UNDECLARED_SELECTOR = YES; 398 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 399 | GCC_WARN_UNUSED_FUNCTION = YES; 400 | GCC_WARN_UNUSED_VARIABLE = YES; 401 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 402 | MTL_ENABLE_DEBUG_INFO = NO; 403 | SDKROOT = iphoneos; 404 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 405 | SWIFT_VERSION = 4.2; 406 | VALIDATE_PRODUCT = YES; 407 | }; 408 | name = Release; 409 | }; 410 | 607FACF01AFB9204008FA782 /* Debug */ = { 411 | isa = XCBuildConfiguration; 412 | baseConfigurationReference = AA30EE02D70D1036C9EBC121 /* Pods-CLWaterWaveView_Example.debug.xcconfig */; 413 | buildSettings = { 414 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 415 | DEVELOPMENT_TEAM = AT3P3UCMEJ; 416 | INFOPLIST_FILE = CLWaterWaveView/Info.plist; 417 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 418 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 419 | MODULE_NAME = ExampleApp; 420 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; 421 | PRODUCT_NAME = "$(TARGET_NAME)"; 422 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 423 | SWIFT_VERSION = 4.2; 424 | TARGETED_DEVICE_FAMILY = "1,2"; 425 | }; 426 | name = Debug; 427 | }; 428 | 607FACF11AFB9204008FA782 /* Release */ = { 429 | isa = XCBuildConfiguration; 430 | baseConfigurationReference = 93A501ABD14A52A351D42472 /* Pods-CLWaterWaveView_Example.release.xcconfig */; 431 | buildSettings = { 432 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 433 | DEVELOPMENT_TEAM = AT3P3UCMEJ; 434 | INFOPLIST_FILE = CLWaterWaveView/Info.plist; 435 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 436 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 437 | MODULE_NAME = ExampleApp; 438 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; 439 | PRODUCT_NAME = "$(TARGET_NAME)"; 440 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 441 | SWIFT_VERSION = 4.2; 442 | TARGETED_DEVICE_FAMILY = "1,2"; 443 | }; 444 | name = Release; 445 | }; 446 | /* End XCBuildConfiguration section */ 447 | 448 | /* Begin XCConfigurationList section */ 449 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "CLWaterWaveView" */ = { 450 | isa = XCConfigurationList; 451 | buildConfigurations = ( 452 | 607FACED1AFB9204008FA782 /* Debug */, 453 | 607FACEE1AFB9204008FA782 /* Release */, 454 | ); 455 | defaultConfigurationIsVisible = 0; 456 | defaultConfigurationName = Release; 457 | }; 458 | 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "CLWaterWaveView_Example" */ = { 459 | isa = XCConfigurationList; 460 | buildConfigurations = ( 461 | 607FACF01AFB9204008FA782 /* Debug */, 462 | 607FACF11AFB9204008FA782 /* Release */, 463 | ); 464 | defaultConfigurationIsVisible = 0; 465 | defaultConfigurationName = Release; 466 | }; 467 | /* End XCConfigurationList section */ 468 | }; 469 | rootObject = 607FACC81AFB9204008FA782 /* Project object */; 470 | } 471 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView.xcodeproj/xcshareddata/xcschemes/CLWaterWaveView-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 47 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 65 | 66 | 67 | 68 | 78 | 80 | 86 | 87 | 88 | 89 | 90 | 91 | 97 | 99 | 105 | 106 | 107 | 108 | 110 | 111 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // CLWaterWaveView 4 | // 5 | // Created by Cristian Lupu on 02/04/2018. 6 | // Copyright (c) 2018 Cristian Lupu. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | final class AppDelegate: UIResponder, UIApplicationDelegate { 13 | var window: UIWindow? 14 | 15 | func application(_ application: UIApplication, 16 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 17 | UINavigationBar.appearance().tintColor = .white 18 | return true 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 24 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 192 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 349 | 350 | 351 | 352 | 361 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 461 | 470 | 471 | 472 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView/CrossroadsViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CrossroadsViewController.swift 3 | // CLWaterWaveView_Example 4 | // 5 | // Created by Cristian Lupu on 2/4/18. 6 | // Copyright © 2018 Cristian Lupu. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | final class CrossroadsViewController: UIViewController { 13 | 14 | @IBOutlet weak private var tableView: UITableView! 15 | 16 | private let cellReuseId = "Demo Cell" 17 | 18 | override var preferredStatusBarStyle: UIStatusBarStyle { 19 | return .lightContent 20 | } 21 | 22 | override func viewDidLoad() { 23 | super.viewDidLoad() 24 | 25 | tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseId) 26 | tableView.tableFooterView = UIView() 27 | } 28 | 29 | } 30 | 31 | extension CrossroadsViewController: UITableViewDataSource { 32 | 33 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 34 | return 2 35 | } 36 | 37 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 38 | let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseId)! 39 | 40 | cell.selectionStyle = .none 41 | cell.textLabel?.textColor = .orange 42 | cell.backgroundColor = .clear 43 | 44 | switch indexPath.row { 45 | case 0: 46 | cell.textLabel?.text = "Via Interface Builder" 47 | case 1: 48 | cell.textLabel?.text = "Two Waves" 49 | default: 50 | break 51 | } 52 | 53 | return cell 54 | } 55 | 56 | } 57 | 58 | extension CrossroadsViewController: UITableViewDelegate { 59 | 60 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 61 | tableView.deselectRow(at: indexPath, animated: true) 62 | 63 | guard let cell = tableView.cellForRow(at: indexPath) else { 64 | return 65 | } 66 | 67 | switch indexPath.row { 68 | case 0: 69 | let vc = IBFabric.interfaceBuilderExampleViewController 70 | vc.title = cell.textLabel?.text 71 | navigationController?.pushViewController(vc, animated: true) 72 | case 1: 73 | let vc = IBFabric.twoWavesViewController 74 | vc.title = cell.textLabel?.text 75 | navigationController?.pushViewController(vc, animated: true) 76 | default: 77 | break 78 | } 79 | } 80 | 81 | func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) { 82 | guard let cell = tableView.cellForRow(at: indexPath) else { 83 | return 84 | } 85 | cell.backgroundColor = .black 86 | } 87 | 88 | func tableView(_ tableView: UITableView, didUnhighlightRowAt indexPath: IndexPath) { 89 | guard let cell = tableView.cellForRow(at: indexPath) else { 90 | return 91 | } 92 | cell.backgroundColor = .clear 93 | } 94 | 95 | } 96 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView/IBFabric.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IBFabric.swift 3 | // CLWaterWaveView_Example 4 | // 5 | // Created by Cristian Lupu on 2/4/18. 6 | // Copyright © 2018 Cristian Lupu. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | enum IBFabric { 13 | private static var mainStoryboard: UIStoryboard { 14 | return UIStoryboard(name: "Main", bundle: nil) 15 | } 16 | 17 | static var interfaceBuilderExampleViewController: InterfaceBuilderExampleViewController { 18 | return mainStoryboard.instantiateViewController(withIdentifier: "InterfaceBuilderExampleViewController") as! InterfaceBuilderExampleViewController 19 | } 20 | 21 | static var twoWavesViewController: TwoWavesViewController { 22 | return mainStoryboard.instantiateViewController(withIdentifier: "TwoWavesViewController") as! TwoWavesViewController 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/CFcfczo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/CFcfczo.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@2x.png", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@3x.png", 25 | "scale" : "3x" 26 | }, 27 | { 28 | "size" : "40x40", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-40x40@2x.png", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@3x.png", 37 | "scale" : "3x" 38 | }, 39 | { 40 | "size" : "60x60", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-60x60@2x.png", 43 | "scale" : "2x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@3x.png", 49 | "scale" : "3x" 50 | }, 51 | { 52 | "size" : "20x20", 53 | "idiom" : "ipad", 54 | "filename" : "Icon-App-20x20@1x.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@2x-1.png", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "size" : "29x29", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-29x29@1x.png", 67 | "scale" : "1x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@2x-1.png", 73 | "scale" : "2x" 74 | }, 75 | { 76 | "size" : "40x40", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-40x40@1x.png", 79 | "scale" : "1x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@2x-1.png", 85 | "scale" : "2x" 86 | }, 87 | { 88 | "size" : "76x76", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-76x76@1x.png", 91 | "scale" : "1x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@2x.png", 97 | "scale" : "2x" 98 | }, 99 | { 100 | "size" : "83.5x83.5", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-83.5x83.5@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "1024x1024", 107 | "idiom" : "ios-marketing", 108 | "filename" : "CFcfczo.png", 109 | "scale" : "1x" 110 | } 111 | ], 112 | "info" : { 113 | "version" : 1, 114 | "author" : "xcode" 115 | } 116 | } -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/Example/CLWaterWaveView/Images.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Example/CLWaterWaveView/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.2 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.2 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | UIInterfaceOrientationPortraitUpsideDown 39 | 40 | UIViewControllerBasedStatusBarAppearance 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView/InterfaceBuilderExampleViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InterfaceBuilderExampleViewController.swift 3 | // CLWaterWaveView_Example 4 | // 5 | // Created by Cristian Lupu on 2/4/18. 6 | // Copyright © 2018 Cristian Lupu. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | import CLWaterWaveView 12 | 13 | final class InterfaceBuilderExampleViewController: UIViewController { 14 | 15 | @IBOutlet weak private var waveView: CLWaterWaveView! 16 | @IBOutlet weak private var amplitudeSlider: UISlider! 17 | @IBOutlet weak private var speedSlider: UISlider! 18 | @IBOutlet weak private var angularVelocitySlider: UISlider! 19 | @IBOutlet weak private var depthSlider: UISlider! 20 | 21 | override var preferredStatusBarStyle: UIStatusBarStyle { 22 | return .lightContent 23 | } 24 | 25 | override func viewDidLoad() { 26 | super.viewDidLoad() 27 | 28 | waveView.startAnimation() 29 | 30 | amplitudeSlider.value = WaveSliderHelper.procentageAmplitude(for: waveView.amplitude) 31 | speedSlider.value = WaveSliderHelper.procentageSpeed(for: waveView.speed) 32 | angularVelocitySlider.value = WaveSliderHelper.procentageAngularVelocity(for: waveView.angularVelocity) 33 | depthSlider.value = WaveSliderHelper.procentageDepth(for: waveView.depth) 34 | } 35 | 36 | @IBAction private func didChangedValue(_ sender: UISlider) { 37 | switch sender { 38 | case amplitudeSlider: 39 | waveView.amplitude = WaveSliderHelper.valueAmplitude(for: sender.value) 40 | print("Wave Amplitude: \(waveView.amplitude)") 41 | case speedSlider: 42 | waveView.speed = WaveSliderHelper.valueSpeed(for: sender.value) 43 | print("Wave Speed: \(waveView.speed)") 44 | case angularVelocitySlider: 45 | waveView.angularVelocity = WaveSliderHelper.valueAngularVelocity(for: sender.value) 46 | print("Wave Angular Velocity: \(waveView.angularVelocity)") 47 | case depthSlider: 48 | waveView.depth = WaveSliderHelper.valueDepth(for: sender.value) 49 | print("Wave Depth: \(waveView.depth)") 50 | default: break 51 | } 52 | } 53 | 54 | @IBAction private func didTapStart(_ sender: UIButton) { 55 | waveView.startAnimation() 56 | } 57 | 58 | @IBAction private func didTapStop(_ sender: UIButton) { 59 | waveView.stopAnimation() 60 | } 61 | 62 | } 63 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView/NavigationController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NavigationController.swift 3 | // CLWaterWaveView_Example 4 | // 5 | // Created by Cristian Lupu on 10/13/18. 6 | // Copyright © 2018 Cristian Lupu. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | final class NavigationController: UINavigationController { 12 | override var preferredStatusBarStyle: UIStatusBarStyle { 13 | return visibleViewController?.preferredStatusBarStyle ?? .lightContent 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView/TwoWavesViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TwoWavesViewController.swift 3 | // CLWaterWaveView_Example 4 | // 5 | // Created by Cristian Lupu on 2/4/18. 6 | // Copyright © 2018 Cristian Lupu. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | import CLWaterWaveView 12 | 13 | final class TwoWavesViewController: UIViewController { 14 | 15 | @IBOutlet weak private var wave_1: CLWaterWaveView! 16 | @IBOutlet weak private var wave_2: CLWaterWaveView! 17 | 18 | @IBOutlet weak private var amplitudeSlider_1: UISlider! 19 | @IBOutlet weak private var speedSlider_1: UISlider! 20 | @IBOutlet weak private var angularVelocitySlider_1: UISlider! 21 | @IBOutlet weak private var depthSlider_1: UISlider! 22 | 23 | @IBOutlet weak private var amplitudeSlider_2: UISlider! 24 | @IBOutlet weak private var speedSlider_2: UISlider! 25 | @IBOutlet weak private var angularVelocitySlider_2: UISlider! 26 | @IBOutlet weak private var depthSlider_2: UISlider! 27 | 28 | override var preferredStatusBarStyle: UIStatusBarStyle { 29 | return .lightContent 30 | } 31 | 32 | override func viewDidLoad() { 33 | super.viewDidLoad() 34 | 35 | wave_1.amplitude = 39 36 | wave_1.speed = 0.008 37 | wave_1.angularVelocity = 0.31 38 | wave_1.depth = 0.55 39 | 40 | wave_1.startAnimation() 41 | 42 | wave_2.amplitude = 39 43 | wave_2.speed = 0.01 44 | wave_2.angularVelocity = 0.28 45 | wave_2.depth = 0.5 46 | 47 | wave_2.startAnimation() 48 | 49 | amplitudeSlider_1.value = WaveSliderHelper.procentageAmplitude(for: wave_1.amplitude) 50 | speedSlider_1.value = WaveSliderHelper.procentageSpeed(for: wave_1.speed) 51 | angularVelocitySlider_1.value = WaveSliderHelper.procentageAngularVelocity(for: wave_1.angularVelocity) 52 | depthSlider_1.value = WaveSliderHelper.procentageDepth(for: wave_1.depth) 53 | 54 | amplitudeSlider_2.value = WaveSliderHelper.procentageAmplitude(for: wave_2.amplitude) 55 | speedSlider_2.value = WaveSliderHelper.procentageSpeed(for: wave_2.speed) 56 | angularVelocitySlider_2.value = WaveSliderHelper.procentageAngularVelocity(for: wave_2.angularVelocity) 57 | depthSlider_2.value = WaveSliderHelper.procentageDepth(for: wave_2.depth) 58 | } 59 | 60 | @IBAction private func didChangedValue(_ sender: UISlider) { 61 | switch sender { 62 | case amplitudeSlider_1: 63 | wave_1.amplitude = WaveSliderHelper.valueAmplitude(for: sender.value) 64 | print("Wave 1 Amplitude: \(wave_1.amplitude)") 65 | case speedSlider_1: 66 | wave_1.speed = WaveSliderHelper.valueSpeed(for: sender.value) 67 | print("Wave 1 Speed: \(wave_1.speed)") 68 | case angularVelocitySlider_1: 69 | wave_1.angularVelocity = WaveSliderHelper.valueAngularVelocity(for: sender.value) 70 | print("Wave 1 Angular Velocity: \(wave_1.angularVelocity)") 71 | case depthSlider_1: 72 | wave_1.depth = WaveSliderHelper.valueDepth(for: sender.value) 73 | print("Wave 1 Depth: \(wave_1.depth)") 74 | case amplitudeSlider_2: 75 | wave_2.amplitude = WaveSliderHelper.valueAmplitude(for: sender.value) 76 | print("Wave 2 Amplitude: \(wave_2.amplitude)") 77 | case speedSlider_2: 78 | wave_2.speed = WaveSliderHelper.valueSpeed(for: sender.value) 79 | print("Wave 2 Speed: \(wave_2.speed)") 80 | case angularVelocitySlider_2: 81 | wave_2.angularVelocity = WaveSliderHelper.valueAngularVelocity(for: sender.value) 82 | print("Wave 2 Angular Velocity: \(wave_2.angularVelocity)") 83 | case depthSlider_2: 84 | wave_2.depth = WaveSliderHelper.valueDepth(for: sender.value) 85 | print("Wave 2 Depth: \(wave_2.depth)") 86 | default: break 87 | } 88 | } 89 | 90 | @IBAction private func didTapStart_1(_ sender: UIButton) { 91 | wave_1.startAnimation() 92 | } 93 | 94 | @IBAction private func didTapStop_1(_ sender: UIButton) { 95 | wave_1.stopAnimation() 96 | } 97 | 98 | @IBAction private func didTapStart_2(_ sender: UIButton) { 99 | wave_2.startAnimation() 100 | } 101 | 102 | @IBAction private func didTapStop_2(_ sender: UIButton) { 103 | wave_2.stopAnimation() 104 | } 105 | 106 | } 107 | -------------------------------------------------------------------------------- /Example/CLWaterWaveView/WaveSliderHelper.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WaveSliderHelper.swift 3 | // CLWaterWaveView_Example 4 | // 5 | // Created by Cristian Lupu on 2/4/18. 6 | // Copyright © 2018 Cristian Lupu. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import CoreGraphics 11 | 12 | enum WaveSliderHelper { 13 | static func procentageAmplitude(for value: CGFloat) -> Float { 14 | return Float((value - 20) / 50) 15 | } 16 | 17 | static func valueAmplitude(for value: Float) -> CGFloat { 18 | return CGFloat((value * 50) + 20) 19 | } 20 | 21 | static func procentageSpeed(for value: CGFloat) -> Float { 22 | return Float((value - 0.003) / 0.007) 23 | } 24 | 25 | static func valueSpeed(for value: Float) -> CGFloat { 26 | return CGFloat((value * 0.007) + 0.003) 27 | } 28 | 29 | static func procentageAngularVelocity(for value: CGFloat) -> Float { 30 | return Float((value - 0.2) / 0.4) 31 | } 32 | 33 | static func valueAngularVelocity(for value: Float) -> CGFloat { 34 | return CGFloat((value * 0.4) + 0.2) 35 | } 36 | 37 | static func procentageDepth(for value: CGFloat) -> Float { 38 | return Float((value - 0) / 1) 39 | } 40 | 41 | static func valueDepth(for value: Float) -> CGFloat { 42 | return CGFloat((value * 1) + 0) 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '9.0' 2 | use_frameworks! 3 | 4 | target 'CLWaterWaveView_Example' do 5 | pod 'CLWaterWaveView', :path => '../' 6 | end 7 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - CLWaterWaveView (1.2) 3 | 4 | DEPENDENCIES: 5 | - CLWaterWaveView (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | CLWaterWaveView: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | CLWaterWaveView: 990c7400ba5c1f17b544bbc98ebb9ef7355e5bf1 13 | 14 | PODFILE CHECKSUM: cf659acf7c5dc94df084c12bdfa2147743e2099a 15 | 16 | COCOAPODS: 1.5.3 17 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/CLWaterWaveView.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CLWaterWaveView", 3 | "version": "1.2", 4 | "summary": "Water Wave Effect on iOS", 5 | "description": "A UIView what able to show water wave effect", 6 | "homepage": "https://github.com/cristi-lupu/CLWaterWaveView", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "Cristian Lupu": "lupucristiancptc@gmail.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/cristiLupu/CLWaterWaveView.git", 16 | "tag": "1.2" 17 | }, 18 | "social_media_url": "https://twitter.com/LupuCrist", 19 | "platforms": { 20 | "ios": "9.0" 21 | }, 22 | "swift_version": "4.2", 23 | "source_files": "Sources/**/*" 24 | } 25 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - CLWaterWaveView (1.2) 3 | 4 | DEPENDENCIES: 5 | - CLWaterWaveView (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | CLWaterWaveView: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | CLWaterWaveView: 990c7400ba5c1f17b544bbc98ebb9ef7355e5bf1 13 | 14 | PODFILE CHECKSUM: cf659acf7c5dc94df084c12bdfa2147743e2099a 15 | 16 | COCOAPODS: 1.5.3 17 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 43B04F4AB4A8D00E44021F44BCB54E22 /* CLWaterWaveView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B0E20911826C713AB11EE9FE18CEEED7 /* CLWaterWaveView-dummy.m */; }; 11 | 46602F8F1CE638B6CA8924C81B364AEB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A16F4CFC63FAC439D7A04994F579A03 /* Foundation.framework */; }; 12 | 5D602BB995B8779B08241DB36BCBDFE5 /* CLWaterWaveModel+Defaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7B980720C704F39947D76C65E3CA7C /* CLWaterWaveModel+Defaults.swift */; }; 13 | 71A751E6D4DEB15A2DABE555BD0B06C4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A16F4CFC63FAC439D7A04994F579A03 /* Foundation.framework */; }; 14 | 80E643A3CEC3BB4AF5B775320F957A88 /* CLWaterWaveView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E97F7F25D282E72C0EEB177EB3E60BE /* CLWaterWaveView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 15 | A037E4611A11073693006AF57B246584 /* CLWaterWaveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18A81CA1ACAD6EFAF7F4A57EDF94DB16 /* CLWaterWaveView.swift */; }; 16 | A6CF25958F2CADBD9E46EA73792D7DE4 /* CLWaterWaveModelDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F08E671042FDC7E6E74A1175E70ED2F /* CLWaterWaveModelDelegate.swift */; }; 17 | BB26BEAC41E80B154FC7E4722B0D24A5 /* Pods-CLWaterWaveView_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 60994BBC0BB759BDADC76DED43345736 /* Pods-CLWaterWaveView_Example-dummy.m */; }; 18 | CE4F2589B07499717D7E040DA61182F7 /* CLWaterWaveModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F2E81019650B12F0E9BAD512CE721FD /* CLWaterWaveModel.swift */; }; 19 | FAB00A64A9E0B6C53D403759E2A6DC4F /* Pods-CLWaterWaveView_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D705B048C68B35CB14D7CA0B1CEC093 /* Pods-CLWaterWaveView_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 20 | /* End PBXBuildFile section */ 21 | 22 | /* Begin PBXContainerItemProxy section */ 23 | 2EC385ECEC7FFD93D1C1D997D0F4517C /* PBXContainerItemProxy */ = { 24 | isa = PBXContainerItemProxy; 25 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 26 | proxyType = 1; 27 | remoteGlobalIDString = 03BF0B15ADCA0DBE240E1AC8F7CC75E7; 28 | remoteInfo = CLWaterWaveView; 29 | }; 30 | /* End PBXContainerItemProxy section */ 31 | 32 | /* Begin PBXFileReference section */ 33 | 097460269D96C7AFB1BE9A5415BA9B21 /* Pods-CLWaterWaveView_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CLWaterWaveView_Example-acknowledgements.plist"; sourceTree = ""; }; 34 | 09F03A8C6A3E908D3B0BF541712D7A77 /* CLWaterWaveView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CLWaterWaveView.xcconfig; sourceTree = ""; }; 35 | 0E97F7F25D282E72C0EEB177EB3E60BE /* CLWaterWaveView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CLWaterWaveView-umbrella.h"; sourceTree = ""; }; 36 | 13ADC007A558062DBEFDFBA38F34E4C7 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 37 | 18A81CA1ACAD6EFAF7F4A57EDF94DB16 /* CLWaterWaveView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CLWaterWaveView.swift; path = Sources/CLWaterWaveView.swift; sourceTree = ""; }; 38 | 29CD7BB5FB683777D3E735604FB2C679 /* Pods-CLWaterWaveView_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CLWaterWaveView_Example-resources.sh"; sourceTree = ""; }; 39 | 2DF53290918B86F6AC8227F38791E8F6 /* Pods-CLWaterWaveView_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CLWaterWaveView_Example-acknowledgements.markdown"; sourceTree = ""; }; 40 | 371147360A3096CC91E2B795D6694CEC /* Pods-CLWaterWaveView_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CLWaterWaveView_Example-frameworks.sh"; sourceTree = ""; }; 41 | 3D705B048C68B35CB14D7CA0B1CEC093 /* Pods-CLWaterWaveView_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CLWaterWaveView_Example-umbrella.h"; sourceTree = ""; }; 42 | 40EE2AA165C38460CDF210C2537F612C /* Pods-CLWaterWaveView_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CLWaterWaveView_Example.release.xcconfig"; sourceTree = ""; }; 43 | 4F08E671042FDC7E6E74A1175E70ED2F /* CLWaterWaveModelDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CLWaterWaveModelDelegate.swift; path = Sources/CLWaterWaveModelDelegate.swift; sourceTree = ""; }; 44 | 5A16F4CFC63FAC439D7A04994F579A03 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 45 | 5C655953CDAC5FF3B41A644A22CDF2D7 /* Pods-CLWaterWaveView_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-CLWaterWaveView_Example.modulemap"; sourceTree = ""; }; 46 | 60994BBC0BB759BDADC76DED43345736 /* Pods-CLWaterWaveView_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CLWaterWaveView_Example-dummy.m"; sourceTree = ""; }; 47 | 6E7B980720C704F39947D76C65E3CA7C /* CLWaterWaveModel+Defaults.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CLWaterWaveModel+Defaults.swift"; path = "Sources/CLWaterWaveModel+Defaults.swift"; sourceTree = ""; }; 48 | 84731A564B170938C2B9DE7D580AD8AB /* Pods-CLWaterWaveView_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CLWaterWaveView_Example.debug.xcconfig"; sourceTree = ""; }; 49 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 50 | 966FC8D4284C8B9FF005A4B876E9177B /* CLWaterWaveView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CLWaterWaveView.framework; path = CLWaterWaveView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 51 | 9F2E81019650B12F0E9BAD512CE721FD /* CLWaterWaveModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CLWaterWaveModel.swift; path = Sources/CLWaterWaveModel.swift; sourceTree = ""; }; 52 | AC0BC82ADF1A5A2C2669E661E533F1AC /* CLWaterWaveView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CLWaterWaveView-prefix.pch"; sourceTree = ""; }; 53 | B0E20911826C713AB11EE9FE18CEEED7 /* CLWaterWaveView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CLWaterWaveView-dummy.m"; sourceTree = ""; }; 54 | D9753D4359A52C24A9EDC90E6F16A7B8 /* CLWaterWaveView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = CLWaterWaveView.modulemap; sourceTree = ""; }; 55 | E064B703C3C00AD9C40FCF53C897B0E8 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 56 | E8D05ABAA587F5294E24B03A5A607A11 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 57 | EA5D88EF976743EE6EB921E5CFA3C5F9 /* CLWaterWaveView.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = CLWaterWaveView.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 58 | ECE852B8E2C5486436DB300EAB0F9F60 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 59 | ED903F98C3C041FF1F49FDE60FEB315D /* Pods_CLWaterWaveView_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_CLWaterWaveView_Example.framework; path = "Pods-CLWaterWaveView_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 60 | /* End PBXFileReference section */ 61 | 62 | /* Begin PBXFrameworksBuildPhase section */ 63 | 5F7371AF3E792510F477C069A3BE4F76 /* Frameworks */ = { 64 | isa = PBXFrameworksBuildPhase; 65 | buildActionMask = 2147483647; 66 | files = ( 67 | 46602F8F1CE638B6CA8924C81B364AEB /* Foundation.framework in Frameworks */, 68 | ); 69 | runOnlyForDeploymentPostprocessing = 0; 70 | }; 71 | 83B785B54AEDB05EA10D7CDCA865C87D /* Frameworks */ = { 72 | isa = PBXFrameworksBuildPhase; 73 | buildActionMask = 2147483647; 74 | files = ( 75 | 71A751E6D4DEB15A2DABE555BD0B06C4 /* Foundation.framework in Frameworks */, 76 | ); 77 | runOnlyForDeploymentPostprocessing = 0; 78 | }; 79 | /* End PBXFrameworksBuildPhase section */ 80 | 81 | /* Begin PBXGroup section */ 82 | 048C57367FD48B4B69E1BC01AB0A1C72 /* Support Files */ = { 83 | isa = PBXGroup; 84 | children = ( 85 | D9753D4359A52C24A9EDC90E6F16A7B8 /* CLWaterWaveView.modulemap */, 86 | 09F03A8C6A3E908D3B0BF541712D7A77 /* CLWaterWaveView.xcconfig */, 87 | B0E20911826C713AB11EE9FE18CEEED7 /* CLWaterWaveView-dummy.m */, 88 | AC0BC82ADF1A5A2C2669E661E533F1AC /* CLWaterWaveView-prefix.pch */, 89 | 0E97F7F25D282E72C0EEB177EB3E60BE /* CLWaterWaveView-umbrella.h */, 90 | E8D05ABAA587F5294E24B03A5A607A11 /* Info.plist */, 91 | ); 92 | name = "Support Files"; 93 | path = "Example/Pods/Target Support Files/CLWaterWaveView"; 94 | sourceTree = ""; 95 | }; 96 | 2703D607C5889357F1352E9C05C7733A /* Development Pods */ = { 97 | isa = PBXGroup; 98 | children = ( 99 | 5B40F10D3D4AAC0E13EB201E81779926 /* CLWaterWaveView */, 100 | ); 101 | name = "Development Pods"; 102 | sourceTree = ""; 103 | }; 104 | 511E9BC42CF35A1294F02FD6825449AF /* Products */ = { 105 | isa = PBXGroup; 106 | children = ( 107 | 966FC8D4284C8B9FF005A4B876E9177B /* CLWaterWaveView.framework */, 108 | ED903F98C3C041FF1F49FDE60FEB315D /* Pods_CLWaterWaveView_Example.framework */, 109 | ); 110 | name = Products; 111 | sourceTree = ""; 112 | }; 113 | 5B40F10D3D4AAC0E13EB201E81779926 /* CLWaterWaveView */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | 9F2E81019650B12F0E9BAD512CE721FD /* CLWaterWaveModel.swift */, 117 | 6E7B980720C704F39947D76C65E3CA7C /* CLWaterWaveModel+Defaults.swift */, 118 | 4F08E671042FDC7E6E74A1175E70ED2F /* CLWaterWaveModelDelegate.swift */, 119 | 18A81CA1ACAD6EFAF7F4A57EDF94DB16 /* CLWaterWaveView.swift */, 120 | 5D0BECFAFCDC57EEB9CB7B51CF1D8A0A /* Pod */, 121 | 048C57367FD48B4B69E1BC01AB0A1C72 /* Support Files */, 122 | ); 123 | name = CLWaterWaveView; 124 | path = ../..; 125 | sourceTree = ""; 126 | }; 127 | 5D0BECFAFCDC57EEB9CB7B51CF1D8A0A /* Pod */ = { 128 | isa = PBXGroup; 129 | children = ( 130 | EA5D88EF976743EE6EB921E5CFA3C5F9 /* CLWaterWaveView.podspec */, 131 | 13ADC007A558062DBEFDFBA38F34E4C7 /* LICENSE */, 132 | ECE852B8E2C5486436DB300EAB0F9F60 /* README.md */, 133 | ); 134 | name = Pod; 135 | sourceTree = ""; 136 | }; 137 | 5E0D919E635D23B70123790B8308F8EF /* iOS */ = { 138 | isa = PBXGroup; 139 | children = ( 140 | 5A16F4CFC63FAC439D7A04994F579A03 /* Foundation.framework */, 141 | ); 142 | name = iOS; 143 | sourceTree = ""; 144 | }; 145 | 7DB346D0F39D3F0E887471402A8071AB = { 146 | isa = PBXGroup; 147 | children = ( 148 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 149 | 2703D607C5889357F1352E9C05C7733A /* Development Pods */, 150 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, 151 | 511E9BC42CF35A1294F02FD6825449AF /* Products */, 152 | 7F61B785A34D698521CB044BDDCD9852 /* Targets Support Files */, 153 | ); 154 | sourceTree = ""; 155 | }; 156 | 7F61B785A34D698521CB044BDDCD9852 /* Targets Support Files */ = { 157 | isa = PBXGroup; 158 | children = ( 159 | 984FFE7E580B378705E5001BDC4C7DAD /* Pods-CLWaterWaveView_Example */, 160 | ); 161 | name = "Targets Support Files"; 162 | sourceTree = ""; 163 | }; 164 | 984FFE7E580B378705E5001BDC4C7DAD /* Pods-CLWaterWaveView_Example */ = { 165 | isa = PBXGroup; 166 | children = ( 167 | E064B703C3C00AD9C40FCF53C897B0E8 /* Info.plist */, 168 | 5C655953CDAC5FF3B41A644A22CDF2D7 /* Pods-CLWaterWaveView_Example.modulemap */, 169 | 2DF53290918B86F6AC8227F38791E8F6 /* Pods-CLWaterWaveView_Example-acknowledgements.markdown */, 170 | 097460269D96C7AFB1BE9A5415BA9B21 /* Pods-CLWaterWaveView_Example-acknowledgements.plist */, 171 | 60994BBC0BB759BDADC76DED43345736 /* Pods-CLWaterWaveView_Example-dummy.m */, 172 | 371147360A3096CC91E2B795D6694CEC /* Pods-CLWaterWaveView_Example-frameworks.sh */, 173 | 29CD7BB5FB683777D3E735604FB2C679 /* Pods-CLWaterWaveView_Example-resources.sh */, 174 | 3D705B048C68B35CB14D7CA0B1CEC093 /* Pods-CLWaterWaveView_Example-umbrella.h */, 175 | 84731A564B170938C2B9DE7D580AD8AB /* Pods-CLWaterWaveView_Example.debug.xcconfig */, 176 | 40EE2AA165C38460CDF210C2537F612C /* Pods-CLWaterWaveView_Example.release.xcconfig */, 177 | ); 178 | name = "Pods-CLWaterWaveView_Example"; 179 | path = "Target Support Files/Pods-CLWaterWaveView_Example"; 180 | sourceTree = ""; 181 | }; 182 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { 183 | isa = PBXGroup; 184 | children = ( 185 | 5E0D919E635D23B70123790B8308F8EF /* iOS */, 186 | ); 187 | name = Frameworks; 188 | sourceTree = ""; 189 | }; 190 | /* End PBXGroup section */ 191 | 192 | /* Begin PBXHeadersBuildPhase section */ 193 | 4BA646168A2E931E67F190A3EA59AC8C /* Headers */ = { 194 | isa = PBXHeadersBuildPhase; 195 | buildActionMask = 2147483647; 196 | files = ( 197 | 80E643A3CEC3BB4AF5B775320F957A88 /* CLWaterWaveView-umbrella.h in Headers */, 198 | ); 199 | runOnlyForDeploymentPostprocessing = 0; 200 | }; 201 | 7F5C2F518C32446C96D285B9825BC819 /* Headers */ = { 202 | isa = PBXHeadersBuildPhase; 203 | buildActionMask = 2147483647; 204 | files = ( 205 | FAB00A64A9E0B6C53D403759E2A6DC4F /* Pods-CLWaterWaveView_Example-umbrella.h in Headers */, 206 | ); 207 | runOnlyForDeploymentPostprocessing = 0; 208 | }; 209 | /* End PBXHeadersBuildPhase section */ 210 | 211 | /* Begin PBXNativeTarget section */ 212 | 03BF0B15ADCA0DBE240E1AC8F7CC75E7 /* CLWaterWaveView */ = { 213 | isa = PBXNativeTarget; 214 | buildConfigurationList = 455004447F270E939B9E67B85F5BE2CB /* Build configuration list for PBXNativeTarget "CLWaterWaveView" */; 215 | buildPhases = ( 216 | 4BA646168A2E931E67F190A3EA59AC8C /* Headers */, 217 | 24C02DB1277EA90D9D8B161A1A6C37DC /* Sources */, 218 | 5F7371AF3E792510F477C069A3BE4F76 /* Frameworks */, 219 | E01778A8C9D9F4C40DB243B3526EB7AC /* Resources */, 220 | ); 221 | buildRules = ( 222 | ); 223 | dependencies = ( 224 | ); 225 | name = CLWaterWaveView; 226 | productName = CLWaterWaveView; 227 | productReference = 966FC8D4284C8B9FF005A4B876E9177B /* CLWaterWaveView.framework */; 228 | productType = "com.apple.product-type.framework"; 229 | }; 230 | 1B949AE31CC81AF446F97F4FC5CEA437 /* Pods-CLWaterWaveView_Example */ = { 231 | isa = PBXNativeTarget; 232 | buildConfigurationList = 575409544F0331EDDA659A2C3E4129DA /* Build configuration list for PBXNativeTarget "Pods-CLWaterWaveView_Example" */; 233 | buildPhases = ( 234 | 7F5C2F518C32446C96D285B9825BC819 /* Headers */, 235 | CDEF853866A6D208EEB5C4D3D8ECADFE /* Sources */, 236 | 83B785B54AEDB05EA10D7CDCA865C87D /* Frameworks */, 237 | 6A66977A96B1BDECA5908C625CB3EEDD /* Resources */, 238 | ); 239 | buildRules = ( 240 | ); 241 | dependencies = ( 242 | AC5737429A96076C1AA0F163E2FA2344 /* PBXTargetDependency */, 243 | ); 244 | name = "Pods-CLWaterWaveView_Example"; 245 | productName = "Pods-CLWaterWaveView_Example"; 246 | productReference = ED903F98C3C041FF1F49FDE60FEB315D /* Pods_CLWaterWaveView_Example.framework */; 247 | productType = "com.apple.product-type.framework"; 248 | }; 249 | /* End PBXNativeTarget section */ 250 | 251 | /* Begin PBXProject section */ 252 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { 253 | isa = PBXProject; 254 | attributes = { 255 | LastSwiftUpdateCheck = 0930; 256 | LastUpgradeCheck = 0930; 257 | }; 258 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; 259 | compatibilityVersion = "Xcode 3.2"; 260 | developmentRegion = English; 261 | hasScannedForEncodings = 0; 262 | knownRegions = ( 263 | en, 264 | ); 265 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB; 266 | productRefGroup = 511E9BC42CF35A1294F02FD6825449AF /* Products */; 267 | projectDirPath = ""; 268 | projectRoot = ""; 269 | targets = ( 270 | 03BF0B15ADCA0DBE240E1AC8F7CC75E7 /* CLWaterWaveView */, 271 | 1B949AE31CC81AF446F97F4FC5CEA437 /* Pods-CLWaterWaveView_Example */, 272 | ); 273 | }; 274 | /* End PBXProject section */ 275 | 276 | /* Begin PBXResourcesBuildPhase section */ 277 | 6A66977A96B1BDECA5908C625CB3EEDD /* Resources */ = { 278 | isa = PBXResourcesBuildPhase; 279 | buildActionMask = 2147483647; 280 | files = ( 281 | ); 282 | runOnlyForDeploymentPostprocessing = 0; 283 | }; 284 | E01778A8C9D9F4C40DB243B3526EB7AC /* Resources */ = { 285 | isa = PBXResourcesBuildPhase; 286 | buildActionMask = 2147483647; 287 | files = ( 288 | ); 289 | runOnlyForDeploymentPostprocessing = 0; 290 | }; 291 | /* End PBXResourcesBuildPhase section */ 292 | 293 | /* Begin PBXSourcesBuildPhase section */ 294 | 24C02DB1277EA90D9D8B161A1A6C37DC /* Sources */ = { 295 | isa = PBXSourcesBuildPhase; 296 | buildActionMask = 2147483647; 297 | files = ( 298 | 5D602BB995B8779B08241DB36BCBDFE5 /* CLWaterWaveModel+Defaults.swift in Sources */, 299 | CE4F2589B07499717D7E040DA61182F7 /* CLWaterWaveModel.swift in Sources */, 300 | A6CF25958F2CADBD9E46EA73792D7DE4 /* CLWaterWaveModelDelegate.swift in Sources */, 301 | 43B04F4AB4A8D00E44021F44BCB54E22 /* CLWaterWaveView-dummy.m in Sources */, 302 | A037E4611A11073693006AF57B246584 /* CLWaterWaveView.swift in Sources */, 303 | ); 304 | runOnlyForDeploymentPostprocessing = 0; 305 | }; 306 | CDEF853866A6D208EEB5C4D3D8ECADFE /* Sources */ = { 307 | isa = PBXSourcesBuildPhase; 308 | buildActionMask = 2147483647; 309 | files = ( 310 | BB26BEAC41E80B154FC7E4722B0D24A5 /* Pods-CLWaterWaveView_Example-dummy.m in Sources */, 311 | ); 312 | runOnlyForDeploymentPostprocessing = 0; 313 | }; 314 | /* End PBXSourcesBuildPhase section */ 315 | 316 | /* Begin PBXTargetDependency section */ 317 | AC5737429A96076C1AA0F163E2FA2344 /* PBXTargetDependency */ = { 318 | isa = PBXTargetDependency; 319 | name = CLWaterWaveView; 320 | target = 03BF0B15ADCA0DBE240E1AC8F7CC75E7 /* CLWaterWaveView */; 321 | targetProxy = 2EC385ECEC7FFD93D1C1D997D0F4517C /* PBXContainerItemProxy */; 322 | }; 323 | /* End PBXTargetDependency section */ 324 | 325 | /* Begin XCBuildConfiguration section */ 326 | 002B3F21936A0EF4D489A1CADC2308A0 /* Release */ = { 327 | isa = XCBuildConfiguration; 328 | baseConfigurationReference = 09F03A8C6A3E908D3B0BF541712D7A77 /* CLWaterWaveView.xcconfig */; 329 | buildSettings = { 330 | CODE_SIGN_IDENTITY = ""; 331 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 332 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 333 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 334 | CURRENT_PROJECT_VERSION = 1; 335 | DEFINES_MODULE = YES; 336 | DYLIB_COMPATIBILITY_VERSION = 1; 337 | DYLIB_CURRENT_VERSION = 1; 338 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 339 | GCC_PREFIX_HEADER = "Target Support Files/CLWaterWaveView/CLWaterWaveView-prefix.pch"; 340 | INFOPLIST_FILE = "Target Support Files/CLWaterWaveView/Info.plist"; 341 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 342 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 343 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 344 | MODULEMAP_FILE = "Target Support Files/CLWaterWaveView/CLWaterWaveView.modulemap"; 345 | PRODUCT_MODULE_NAME = CLWaterWaveView; 346 | PRODUCT_NAME = CLWaterWaveView; 347 | SDKROOT = iphoneos; 348 | SKIP_INSTALL = YES; 349 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 350 | SWIFT_COMPILATION_MODE = wholemodule; 351 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 352 | SWIFT_VERSION = 4.2; 353 | TARGETED_DEVICE_FAMILY = "1,2"; 354 | VALIDATE_PRODUCT = YES; 355 | VERSIONING_SYSTEM = "apple-generic"; 356 | VERSION_INFO_PREFIX = ""; 357 | }; 358 | name = Release; 359 | }; 360 | 16F9D979EA7F77E2462B3EF7E16EF5CF /* Debug */ = { 361 | isa = XCBuildConfiguration; 362 | baseConfigurationReference = 84731A564B170938C2B9DE7D580AD8AB /* Pods-CLWaterWaveView_Example.debug.xcconfig */; 363 | buildSettings = { 364 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 365 | CODE_SIGN_IDENTITY = ""; 366 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 367 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 368 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 369 | CURRENT_PROJECT_VERSION = 1; 370 | DEFINES_MODULE = YES; 371 | DYLIB_COMPATIBILITY_VERSION = 1; 372 | DYLIB_CURRENT_VERSION = 1; 373 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 374 | INFOPLIST_FILE = "Target Support Files/Pods-CLWaterWaveView_Example/Info.plist"; 375 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 376 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 377 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 378 | MACH_O_TYPE = staticlib; 379 | MODULEMAP_FILE = "Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example.modulemap"; 380 | OTHER_LDFLAGS = ""; 381 | OTHER_LIBTOOLFLAGS = ""; 382 | PODS_ROOT = "$(SRCROOT)"; 383 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 384 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 385 | SDKROOT = iphoneos; 386 | SKIP_INSTALL = YES; 387 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 388 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 389 | TARGETED_DEVICE_FAMILY = "1,2"; 390 | VERSIONING_SYSTEM = "apple-generic"; 391 | VERSION_INFO_PREFIX = ""; 392 | }; 393 | name = Debug; 394 | }; 395 | 60DAF49CA7A9F362148D49C3C3123B2A /* Debug */ = { 396 | isa = XCBuildConfiguration; 397 | buildSettings = { 398 | ALWAYS_SEARCH_USER_PATHS = NO; 399 | CLANG_ANALYZER_NONNULL = YES; 400 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 401 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 402 | CLANG_CXX_LIBRARY = "libc++"; 403 | CLANG_ENABLE_MODULES = YES; 404 | CLANG_ENABLE_OBJC_ARC = YES; 405 | CLANG_ENABLE_OBJC_WEAK = YES; 406 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 407 | CLANG_WARN_BOOL_CONVERSION = YES; 408 | CLANG_WARN_COMMA = YES; 409 | CLANG_WARN_CONSTANT_CONVERSION = YES; 410 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 411 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 412 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 413 | CLANG_WARN_EMPTY_BODY = YES; 414 | CLANG_WARN_ENUM_CONVERSION = YES; 415 | CLANG_WARN_INFINITE_RECURSION = YES; 416 | CLANG_WARN_INT_CONVERSION = YES; 417 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 418 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 419 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 420 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 421 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 422 | CLANG_WARN_STRICT_PROTOTYPES = YES; 423 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 424 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 425 | CLANG_WARN_UNREACHABLE_CODE = YES; 426 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 427 | CODE_SIGNING_ALLOWED = NO; 428 | CODE_SIGNING_REQUIRED = NO; 429 | COPY_PHASE_STRIP = NO; 430 | DEBUG_INFORMATION_FORMAT = dwarf; 431 | ENABLE_STRICT_OBJC_MSGSEND = YES; 432 | ENABLE_TESTABILITY = YES; 433 | GCC_C_LANGUAGE_STANDARD = gnu11; 434 | GCC_DYNAMIC_NO_PIC = NO; 435 | GCC_NO_COMMON_BLOCKS = YES; 436 | GCC_OPTIMIZATION_LEVEL = 0; 437 | GCC_PREPROCESSOR_DEFINITIONS = ( 438 | "POD_CONFIGURATION_DEBUG=1", 439 | "DEBUG=1", 440 | "$(inherited)", 441 | ); 442 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 443 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 444 | GCC_WARN_UNDECLARED_SELECTOR = YES; 445 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 446 | GCC_WARN_UNUSED_FUNCTION = YES; 447 | GCC_WARN_UNUSED_VARIABLE = YES; 448 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 449 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 450 | MTL_FAST_MATH = YES; 451 | ONLY_ACTIVE_ARCH = YES; 452 | PRODUCT_NAME = "$(TARGET_NAME)"; 453 | STRIP_INSTALLED_PRODUCT = NO; 454 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 455 | SYMROOT = "${SRCROOT}/../build"; 456 | }; 457 | name = Debug; 458 | }; 459 | C4EAA84F44D044E108500A81C635F21E /* Release */ = { 460 | isa = XCBuildConfiguration; 461 | buildSettings = { 462 | ALWAYS_SEARCH_USER_PATHS = NO; 463 | CLANG_ANALYZER_NONNULL = YES; 464 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 465 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 466 | CLANG_CXX_LIBRARY = "libc++"; 467 | CLANG_ENABLE_MODULES = YES; 468 | CLANG_ENABLE_OBJC_ARC = YES; 469 | CLANG_ENABLE_OBJC_WEAK = YES; 470 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 471 | CLANG_WARN_BOOL_CONVERSION = YES; 472 | CLANG_WARN_COMMA = YES; 473 | CLANG_WARN_CONSTANT_CONVERSION = YES; 474 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 475 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 476 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 477 | CLANG_WARN_EMPTY_BODY = YES; 478 | CLANG_WARN_ENUM_CONVERSION = YES; 479 | CLANG_WARN_INFINITE_RECURSION = YES; 480 | CLANG_WARN_INT_CONVERSION = YES; 481 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 482 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 483 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 484 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 485 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 486 | CLANG_WARN_STRICT_PROTOTYPES = YES; 487 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 488 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 489 | CLANG_WARN_UNREACHABLE_CODE = YES; 490 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 491 | CODE_SIGNING_ALLOWED = NO; 492 | CODE_SIGNING_REQUIRED = NO; 493 | COPY_PHASE_STRIP = NO; 494 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 495 | ENABLE_NS_ASSERTIONS = NO; 496 | ENABLE_STRICT_OBJC_MSGSEND = YES; 497 | GCC_C_LANGUAGE_STANDARD = gnu11; 498 | GCC_NO_COMMON_BLOCKS = YES; 499 | GCC_PREPROCESSOR_DEFINITIONS = ( 500 | "POD_CONFIGURATION_RELEASE=1", 501 | "$(inherited)", 502 | ); 503 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 504 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 505 | GCC_WARN_UNDECLARED_SELECTOR = YES; 506 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 507 | GCC_WARN_UNUSED_FUNCTION = YES; 508 | GCC_WARN_UNUSED_VARIABLE = YES; 509 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 510 | MTL_ENABLE_DEBUG_INFO = NO; 511 | MTL_FAST_MATH = YES; 512 | PRODUCT_NAME = "$(TARGET_NAME)"; 513 | STRIP_INSTALLED_PRODUCT = NO; 514 | SYMROOT = "${SRCROOT}/../build"; 515 | }; 516 | name = Release; 517 | }; 518 | E70402E9A4CE375A0B4A21FD594CBF34 /* Release */ = { 519 | isa = XCBuildConfiguration; 520 | baseConfigurationReference = 40EE2AA165C38460CDF210C2537F612C /* Pods-CLWaterWaveView_Example.release.xcconfig */; 521 | buildSettings = { 522 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 523 | CODE_SIGN_IDENTITY = ""; 524 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 525 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 526 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 527 | CURRENT_PROJECT_VERSION = 1; 528 | DEFINES_MODULE = YES; 529 | DYLIB_COMPATIBILITY_VERSION = 1; 530 | DYLIB_CURRENT_VERSION = 1; 531 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 532 | INFOPLIST_FILE = "Target Support Files/Pods-CLWaterWaveView_Example/Info.plist"; 533 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 534 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 535 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 536 | MACH_O_TYPE = staticlib; 537 | MODULEMAP_FILE = "Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example.modulemap"; 538 | OTHER_LDFLAGS = ""; 539 | OTHER_LIBTOOLFLAGS = ""; 540 | PODS_ROOT = "$(SRCROOT)"; 541 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 542 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 543 | SDKROOT = iphoneos; 544 | SKIP_INSTALL = YES; 545 | SWIFT_COMPILATION_MODE = wholemodule; 546 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 547 | TARGETED_DEVICE_FAMILY = "1,2"; 548 | VALIDATE_PRODUCT = YES; 549 | VERSIONING_SYSTEM = "apple-generic"; 550 | VERSION_INFO_PREFIX = ""; 551 | }; 552 | name = Release; 553 | }; 554 | F41F91F7CD12047C02C22781CCC2B635 /* Debug */ = { 555 | isa = XCBuildConfiguration; 556 | baseConfigurationReference = 09F03A8C6A3E908D3B0BF541712D7A77 /* CLWaterWaveView.xcconfig */; 557 | buildSettings = { 558 | CODE_SIGN_IDENTITY = ""; 559 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 560 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 561 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 562 | CURRENT_PROJECT_VERSION = 1; 563 | DEFINES_MODULE = YES; 564 | DYLIB_COMPATIBILITY_VERSION = 1; 565 | DYLIB_CURRENT_VERSION = 1; 566 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 567 | GCC_PREFIX_HEADER = "Target Support Files/CLWaterWaveView/CLWaterWaveView-prefix.pch"; 568 | INFOPLIST_FILE = "Target Support Files/CLWaterWaveView/Info.plist"; 569 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 570 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 571 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 572 | MODULEMAP_FILE = "Target Support Files/CLWaterWaveView/CLWaterWaveView.modulemap"; 573 | PRODUCT_MODULE_NAME = CLWaterWaveView; 574 | PRODUCT_NAME = CLWaterWaveView; 575 | SDKROOT = iphoneos; 576 | SKIP_INSTALL = YES; 577 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 578 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 579 | SWIFT_VERSION = 4.2; 580 | TARGETED_DEVICE_FAMILY = "1,2"; 581 | VERSIONING_SYSTEM = "apple-generic"; 582 | VERSION_INFO_PREFIX = ""; 583 | }; 584 | name = Debug; 585 | }; 586 | /* End XCBuildConfiguration section */ 587 | 588 | /* Begin XCConfigurationList section */ 589 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { 590 | isa = XCConfigurationList; 591 | buildConfigurations = ( 592 | 60DAF49CA7A9F362148D49C3C3123B2A /* Debug */, 593 | C4EAA84F44D044E108500A81C635F21E /* Release */, 594 | ); 595 | defaultConfigurationIsVisible = 0; 596 | defaultConfigurationName = Release; 597 | }; 598 | 455004447F270E939B9E67B85F5BE2CB /* Build configuration list for PBXNativeTarget "CLWaterWaveView" */ = { 599 | isa = XCConfigurationList; 600 | buildConfigurations = ( 601 | F41F91F7CD12047C02C22781CCC2B635 /* Debug */, 602 | 002B3F21936A0EF4D489A1CADC2308A0 /* Release */, 603 | ); 604 | defaultConfigurationIsVisible = 0; 605 | defaultConfigurationName = Release; 606 | }; 607 | 575409544F0331EDDA659A2C3E4129DA /* Build configuration list for PBXNativeTarget "Pods-CLWaterWaveView_Example" */ = { 608 | isa = XCConfigurationList; 609 | buildConfigurations = ( 610 | 16F9D979EA7F77E2462B3EF7E16EF5CF /* Debug */, 611 | E70402E9A4CE375A0B4A21FD594CBF34 /* Release */, 612 | ); 613 | defaultConfigurationIsVisible = 0; 614 | defaultConfigurationName = Release; 615 | }; 616 | /* End XCConfigurationList section */ 617 | }; 618 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 619 | } 620 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CLWaterWaveView/CLWaterWaveView-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_CLWaterWaveView : NSObject 3 | @end 4 | @implementation PodsDummy_CLWaterWaveView 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CLWaterWaveView/CLWaterWaveView-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CLWaterWaveView/CLWaterWaveView-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double CLWaterWaveViewVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char CLWaterWaveViewVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CLWaterWaveView/CLWaterWaveView.modulemap: -------------------------------------------------------------------------------- 1 | framework module CLWaterWaveView { 2 | umbrella header "CLWaterWaveView-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CLWaterWaveView/CLWaterWaveView.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CLWaterWaveView 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/CLWaterWaveView/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.2.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CLWaterWaveView_Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## CLWaterWaveView 5 | 6 | Copyright (c) 2018 Cristian Lupu 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2018 Cristian Lupu <lupucristiancptc@gmail.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | CLWaterWaveView 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_CLWaterWaveView_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_CLWaterWaveView_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 7 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # frameworks to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 13 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 14 | 15 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 16 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 17 | 18 | # Used as a return value for each invocation of `strip_invalid_archs` function. 19 | STRIP_BINARY_RETVAL=0 20 | 21 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 22 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 23 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 24 | 25 | # Copies and strips a vendored framework 26 | install_framework() 27 | { 28 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 29 | local source="${BUILT_PRODUCTS_DIR}/$1" 30 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 31 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 32 | elif [ -r "$1" ]; then 33 | local source="$1" 34 | fi 35 | 36 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 37 | 38 | if [ -L "${source}" ]; then 39 | echo "Symlinked..." 40 | source="$(readlink "${source}")" 41 | fi 42 | 43 | # Use filter instead of exclude so missing patterns don't throw errors. 44 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 45 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 46 | 47 | local basename 48 | basename="$(basename -s .framework "$1")" 49 | binary="${destination}/${basename}.framework/${basename}" 50 | if ! [ -r "$binary" ]; then 51 | binary="${destination}/${basename}" 52 | fi 53 | 54 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 55 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 56 | strip_invalid_archs "$binary" 57 | fi 58 | 59 | # Resign the code if required by the build settings to avoid unstable apps 60 | code_sign_if_enabled "${destination}/$(basename "$1")" 61 | 62 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 63 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 64 | local swift_runtime_libs 65 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 66 | for lib in $swift_runtime_libs; do 67 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 68 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 69 | code_sign_if_enabled "${destination}/${lib}" 70 | done 71 | fi 72 | } 73 | 74 | # Copies and strips a vendored dSYM 75 | install_dsym() { 76 | local source="$1" 77 | if [ -r "$source" ]; then 78 | # Copy the dSYM into a the targets temp dir. 79 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" 80 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" 81 | 82 | local basename 83 | basename="$(basename -s .framework.dSYM "$source")" 84 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" 85 | 86 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 87 | if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then 88 | strip_invalid_archs "$binary" 89 | fi 90 | 91 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then 92 | # Move the stripped file into its final destination. 93 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" 94 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" 95 | else 96 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. 97 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" 98 | fi 99 | fi 100 | } 101 | 102 | # Signs a framework with the provided identity 103 | code_sign_if_enabled() { 104 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 105 | # Use the current code_sign_identitiy 106 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 107 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 108 | 109 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 110 | code_sign_cmd="$code_sign_cmd &" 111 | fi 112 | echo "$code_sign_cmd" 113 | eval "$code_sign_cmd" 114 | fi 115 | } 116 | 117 | # Strip invalid architectures 118 | strip_invalid_archs() { 119 | binary="$1" 120 | # Get architectures for current target binary 121 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 122 | # Intersect them with the architectures we are building for 123 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 124 | # If there are no archs supported by this binary then warn the user 125 | if [[ -z "$intersected_archs" ]]; then 126 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 127 | STRIP_BINARY_RETVAL=0 128 | return 129 | fi 130 | stripped="" 131 | for arch in $binary_archs; do 132 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 133 | # Strip non-valid architectures in-place 134 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 135 | stripped="$stripped $arch" 136 | fi 137 | done 138 | if [[ "$stripped" ]]; then 139 | echo "Stripped $binary of architectures:$stripped" 140 | fi 141 | STRIP_BINARY_RETVAL=1 142 | } 143 | 144 | 145 | if [[ "$CONFIGURATION" == "Debug" ]]; then 146 | install_framework "${BUILT_PRODUCTS_DIR}/CLWaterWaveView/CLWaterWaveView.framework" 147 | fi 148 | if [[ "$CONFIGURATION" == "Release" ]]; then 149 | install_framework "${BUILT_PRODUCTS_DIR}/CLWaterWaveView/CLWaterWaveView.framework" 150 | fi 151 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 152 | wait 153 | fi 154 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then 7 | # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # resources to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 13 | 14 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 15 | > "$RESOURCES_TO_COPY" 16 | 17 | XCASSET_FILES=() 18 | 19 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 20 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 21 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 22 | 23 | case "${TARGETED_DEVICE_FAMILY:-}" in 24 | 1,2) 25 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 26 | ;; 27 | 1) 28 | TARGET_DEVICE_ARGS="--target-device iphone" 29 | ;; 30 | 2) 31 | TARGET_DEVICE_ARGS="--target-device ipad" 32 | ;; 33 | 3) 34 | TARGET_DEVICE_ARGS="--target-device tv" 35 | ;; 36 | 4) 37 | TARGET_DEVICE_ARGS="--target-device watch" 38 | ;; 39 | *) 40 | TARGET_DEVICE_ARGS="--target-device mac" 41 | ;; 42 | esac 43 | 44 | install_resource() 45 | { 46 | if [[ "$1" = /* ]] ; then 47 | RESOURCE_PATH="$1" 48 | else 49 | RESOURCE_PATH="${PODS_ROOT}/$1" 50 | fi 51 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 52 | cat << EOM 53 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 54 | EOM 55 | exit 1 56 | fi 57 | case $RESOURCE_PATH in 58 | *.storyboard) 59 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 60 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 61 | ;; 62 | *.xib) 63 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 64 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 65 | ;; 66 | *.framework) 67 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 68 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 69 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 70 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 71 | ;; 72 | *.xcdatamodel) 73 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true 74 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 75 | ;; 76 | *.xcdatamodeld) 77 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true 78 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 79 | ;; 80 | *.xcmappingmodel) 81 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true 82 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 83 | ;; 84 | *.xcassets) 85 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 86 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 87 | ;; 88 | *) 89 | echo "$RESOURCE_PATH" || true 90 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 91 | ;; 92 | esac 93 | } 94 | 95 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 96 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 97 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 98 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 99 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 100 | fi 101 | rm -f "$RESOURCES_TO_COPY" 102 | 103 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] 104 | then 105 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 106 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 107 | while read line; do 108 | if [[ $line != "${PODS_ROOT}*" ]]; then 109 | XCASSET_FILES+=("$line") 110 | fi 111 | done <<<"$OTHER_XCASSETS" 112 | 113 | if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then 114 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 115 | else 116 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" 117 | fi 118 | fi 119 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_CLWaterWaveView_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_CLWaterWaveView_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CLWaterWaveView" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/CLWaterWaveView/CLWaterWaveView.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "CLWaterWaveView" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_CLWaterWaveView_Example { 2 | umbrella header "Pods-CLWaterWaveView_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-CLWaterWaveView_Example/Pods-CLWaterWaveView_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CLWaterWaveView" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/CLWaterWaveView/CLWaterWaveView.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "CLWaterWaveView" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 Cristian Lupu 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

CLWaterWaveView

2 | 3 |

4 | Pod Icon 5 |

6 | 7 |

8 | 9 | Swift 10 | 11 | Platform: iOS 12 | Version 13 | Licence 14 |

15 | 16 | ## Features 17 | 18 | ![Intro Gif](intro.gif) 19 | 20 | * **Simple configuration** 21 | * **Live editing** 22 | 23 | ## Example 24 | 25 | To run the example project, clone the repo, and run **`pod install`** from the Example directory first. 26 | 27 | ![Demo Gif](demo.gif) 28 | 29 | ## Usage 30 | 31 | #### Interface Builder 32 | In Interface Builder, select wave view, and in attributes inspector set values: 33 | 34 | ![Alt Text](attributes_inspector.png) 35 | 36 | #### Code 37 | 38 | ```swift 39 | import CLWaterWaveView 40 | 41 | let waveView = CLWaterWaveView() 42 | 43 | // configure the wave 44 | waveView.amplitude = 39.0 45 | waveView.speed = 0.009 46 | waveView.angularVelocity = 0.37 47 | waveView.depth = 0.37 48 | 49 | waveView.startAnimation() 50 | 51 | // to stop animation 52 | waveView.stopAnimation() 53 | ``` 54 | 55 | ## Installation 56 | 57 | CLWaterWaveView is available through **[CocoaPods](http://cocoapods.org)**. To install 58 | it, simply add the following line to your Podfile: 59 | 60 | ```ruby 61 | pod 'CLWaterWaveView' 62 | ``` 63 | 64 | ## Author 65 | 66 | **Cristian Lupu, lupucristiancptc@gmail.com** 67 | 68 | ## License 69 | 70 | **CLWaterWaveView** is available under the **MIT license**. See the **[LICENSE](https://github.com/cristiLupu/CLWaterWaveView/blob/master/LICENSE)** file for more info. 71 | 72 | 73 | -------------------------------------------------------------------------------- /Sources/CLWaterWaveModel+Defaults.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CLWaterWaveModel+Defaults.swift 3 | // Wave 4 | // 5 | // Created by Cristian Lupu on 12/9/17. 6 | // Copyright © 2017 Cristian Lupu. All rights reserved. 7 | // 8 | 9 | import CoreGraphics.CGBase 10 | 11 | public extension CLWaterWaveModel { 12 | public enum Defaults { 13 | public static let amplitude: CGFloat = 39.0 14 | public static let speed: CGFloat = 0.009 15 | public static let angularVelocity: CGFloat = 0.37 16 | public static let depth: CGFloat = 0.37 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Sources/CLWaterWaveModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CLWaterWaveModel.swift 3 | // Wave 4 | // 5 | // Created by Cristian Lupu on 12/9/17. 6 | // Copyright © 2018 Cristian Lupu. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | public final class CLWaterWaveModel { 12 | // MARK: Public properties 13 | 14 | /// Any class instance delegate who conforms to protocol CLWaterWaveModelDelegate 15 | public weak var delegate: CLWaterWaveModelDelegate? 16 | 17 | /// Frame to calculate the wave 18 | public var frame: CGRect! 19 | 20 | /// Wave depth. 21 | /// - Depth range: 0.0 ... 1.0. 22 | /// - Default value is 0.37 23 | public var depth: CGFloat! 24 | 25 | /// Wave amplitude 26 | /// - Set bigger than 0.0 27 | /// - Default value is 39.0 28 | public var amplitude: CGFloat! 29 | 30 | /// Wave speed 31 | /// - Set bigger than 0.0 32 | /// - Default value is 0.009 33 | public var speed: CGFloat! 34 | 35 | /// Wave Angular Velocity 36 | /// - Set bigger than 0.0 37 | /// - Default value is 0.37 38 | public var angularVelocity: CGFloat! 39 | 40 | /// Animate State 41 | public private(set) var isAnimating = false 42 | 43 | // MARK: Private properties 44 | 45 | private var phase: CGFloat = 0 46 | private var displayLink: CADisplayLink! 47 | 48 | // MARK: Initializations 49 | 50 | public init() { 51 | setDefault() 52 | } 53 | 54 | public init(ownerFrame frame: CGRect) { 55 | self.frame = frame 56 | setDefault() 57 | } 58 | 59 | // MARK: Public methods 60 | 61 | /// Start to calculate the path 62 | public func start() { 63 | guard displayLink == nil, frame != nil, !isAnimating else { 64 | return 65 | } 66 | 67 | isAnimating = true 68 | 69 | displayLink = CADisplayLink(target: self, selector: #selector(wave)) 70 | displayLink.add(to: .main, forMode: .default) 71 | } 72 | 73 | 74 | /// Stop to calculate 75 | public func stop() { 76 | guard displayLink != nil, isAnimating else { 77 | return 78 | } 79 | 80 | isAnimating = false 81 | 82 | displayLink.isPaused = true 83 | displayLink.invalidate() 84 | displayLink = nil 85 | } 86 | 87 | // MARK: Private methods 88 | 89 | private func setDefault() { 90 | self.amplitude = Defaults.amplitude 91 | self.speed = Defaults.speed 92 | self.angularVelocity = Defaults.angularVelocity 93 | self.depth = Defaults.depth 94 | } 95 | 96 | @objc private func wave() { 97 | phase += abs(speed) 98 | let path = createWaterWavePath() 99 | self.delegate?.waterWaveModel(self, didUpdate: path) 100 | } 101 | 102 | private func createWaterWavePath() -> CLWaterWavePath { 103 | let path = CLWaterWavePath() 104 | path.lineWidth = 1 105 | 106 | let waterHeightY = (1 - (abs(depth) > 1.0 ? 1.0 : abs(depth))) * frame.size.height 107 | 108 | path.move(to: CGPoint(x: 0, y: waterHeightY)) 109 | 110 | var y = waterHeightY 111 | 112 | for x in stride(from: 0 as CGFloat, to: frame.size.width, by: +1 as CGFloat) { 113 | y = abs(amplitude) * sin(x / 180 * CGFloat.pi * abs(angularVelocity) + phase / CGFloat.pi * 4) + waterHeightY 114 | path.addLine(to: CGPoint(x: x, y: y)) 115 | } 116 | 117 | path.addLine(to: CGPoint(x: frame.size.width, y: y)) 118 | path.addLine(to: CGPoint(x: frame.size.width, y: frame.size.height)) 119 | path.addLine(to: CGPoint(x: 0, y: frame.size.height)) 120 | path.close() 121 | 122 | return path 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /Sources/CLWaterWaveModelDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CLWaterWaveModelDelegate.swift 3 | // Wave 4 | // 5 | // Created by Cristian Lupu on 12/9/17. 6 | // Copyright © 2018 Cristian Lupu. All rights reserved. 7 | // 8 | 9 | import UIKit.UIBezierPath 10 | 11 | public typealias CLWaterWavePath = UIBezierPath 12 | 13 | public protocol CLWaterWaveModelDelegate: class { 14 | func waterWaveModel(_ waterWaveModel: CLWaterWaveModel, didUpdate wavePath: CLWaterWavePath) 15 | } 16 | -------------------------------------------------------------------------------- /Sources/CLWaterWaveView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CLWaterWaveView.swift 3 | // Wave 4 | // 5 | // Created by Cristian Lupu on 12/9/17. 6 | // Copyright © 2018 Cristian Lupu. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | public final class CLWaterWaveView: UIView { 12 | 13 | // MARK: Public and IBInspectable properties 14 | 15 | /** 16 | Wave depth. 17 | 18 | - Depth range: 0.0 ... 1.0. 19 | - Default value is 0.37 20 | */ 21 | @IBInspectable 22 | public var depth: CGFloat = CLWaterWaveModel.Defaults.depth { 23 | didSet { 24 | waterWaveModel.depth = self.depth 25 | } 26 | } 27 | 28 | /** 29 | Wave amplitude 30 | 31 | - Set bigger than 0.0 32 | - Default value is 39.0 33 | */ 34 | @IBInspectable 35 | public var amplitude: CGFloat = CLWaterWaveModel.Defaults.amplitude { 36 | didSet { 37 | waterWaveModel.amplitude = self.amplitude 38 | } 39 | } 40 | 41 | /** 42 | Wave speed 43 | 44 | - Set bigger than 0.0 45 | - Default value is 0.009 46 | */ 47 | @IBInspectable 48 | public var speed: CGFloat = CLWaterWaveModel.Defaults.speed { 49 | didSet { 50 | waterWaveModel.speed = self.speed 51 | } 52 | } 53 | 54 | /** 55 | Wave Angular Velocity 56 | 57 | - Set bigger than 0.0 58 | - Default value is 0.37 59 | */ 60 | @IBInspectable 61 | public var angularVelocity: CGFloat = CLWaterWaveModel.Defaults.angularVelocity { 62 | didSet { 63 | waterWaveModel.angularVelocity = self.angularVelocity 64 | } 65 | } 66 | 67 | /** 68 | Animate State 69 | */ 70 | public var isAnimating: Bool { 71 | return waterWaveModel.isAnimating 72 | } 73 | 74 | // MARK: Private properties 75 | 76 | private let waterWaveModel = CLWaterWaveModel() 77 | 78 | // MARK: Initializations 79 | 80 | public init() { 81 | super.init(frame: CGRect.zero) 82 | commonInit() 83 | } 84 | 85 | override init(frame: CGRect) { 86 | super.init(frame: frame) 87 | commonInit() 88 | } 89 | 90 | required public init?(coder aDecoder: NSCoder) { 91 | super.init(coder: aDecoder) 92 | commonInit() 93 | } 94 | 95 | // MARK: Layout Subviews 96 | 97 | override public func layoutSubviews() { 98 | super.layoutSubviews() 99 | waterWaveModel.frame = frame 100 | } 101 | 102 | // MARK: Public methods 103 | 104 | public func startAnimation() { 105 | waterWaveModel.start() 106 | } 107 | 108 | public func stopAnimation() { 109 | waterWaveModel.stop() 110 | } 111 | 112 | /** 113 | Add background color animation with 2 base colors 114 | 115 | - author: Lupu Cristian 116 | 117 | - parameter fromColor: 118 | Starting Color. 119 | 120 | - parameter toColor: 121 | Finish Color. 122 | 123 | - parameter duration: 124 | Duration of animation in seconds. 125 | This specify animation duration from color to color. 126 | Default is 2.0. 127 | */ 128 | public func addBackgroundColorAnimation(from fromColor: UIColor, to toColor: UIColor, duration: CFTimeInterval = 2.0) { 129 | let animation = CABasicAnimation(keyPath: "backgroundColor") 130 | 131 | animation.duration = duration 132 | 133 | animation.fromValue = fromColor.cgColor 134 | animation.toValue = toColor.cgColor 135 | 136 | animation.repeatCount = Float.greatestFiniteMagnitude 137 | animation.autoreverses = true 138 | 139 | layer.add(animation, forKey: "backgroundColorAnimation") 140 | } 141 | 142 | // MARK: Private methods 143 | 144 | private func commonInit() { 145 | waterWaveModel.frame = self.frame 146 | waterWaveModel.delegate = self 147 | } 148 | } 149 | 150 | extension CLWaterWaveView: CLWaterWaveModelDelegate { 151 | public func waterWaveModel(_ waterWaveModel: CLWaterWaveModel, didUpdate wavePath: UIBezierPath) { 152 | let shape = CAShapeLayer() 153 | shape.path = wavePath.cgPath 154 | self.layer.mask = shape 155 | } 156 | } 157 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /attributes_inspector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/attributes_inspector.png -------------------------------------------------------------------------------- /demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/demo.gif -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/icon.png -------------------------------------------------------------------------------- /intro.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cristi-lupu/CLWaterWaveView/9af09ea1633de886780a46220e8b3bfbd0d884cd/intro.gif --------------------------------------------------------------------------------