├── InteractiveAnimations.xcodeproj └── project.pbxproj ├── InteractiveAnimations.xcworkspace └── contents.xcworkspacedata ├── InteractiveAnimations ├── DraggableView.h ├── DraggableView.m ├── Images.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── LaunchImage.launchimage │ │ └── Contents.json ├── InteractiveAnimations-Info.plist ├── InteractiveAnimations-Prefix.pch ├── UINTAppDelegate.h ├── UINTAppDelegate.m ├── UINTViewController.h ├── UINTViewController.m ├── en.lproj │ └── InfoPlist.strings └── main.m ├── InteractiveAnimationsTests ├── InteractiveAnimationsTests-Info.plist ├── InteractiveAnimationsTests.m └── en.lproj │ └── InfoPlist.strings └── Podfile /InteractiveAnimations.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 83CEFD951913DD0B00F82FA4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83CEFD941913DD0B00F82FA4 /* Foundation.framework */; }; 11 | 83CEFD971913DD0B00F82FA4 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83CEFD961913DD0B00F82FA4 /* CoreGraphics.framework */; }; 12 | 83CEFD991913DD0B00F82FA4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83CEFD981913DD0B00F82FA4 /* UIKit.framework */; }; 13 | 83CEFD9F1913DD0B00F82FA4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 83CEFD9D1913DD0B00F82FA4 /* InfoPlist.strings */; }; 14 | 83CEFDA11913DD0B00F82FA4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 83CEFDA01913DD0B00F82FA4 /* main.m */; }; 15 | 83CEFDA51913DD0B00F82FA4 /* UINTAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 83CEFDA41913DD0B00F82FA4 /* UINTAppDelegate.m */; }; 16 | 83CEFDAB1913DD0B00F82FA4 /* UINTViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 83CEFDAA1913DD0B00F82FA4 /* UINTViewController.m */; }; 17 | 83CEFDAD1913DD0B00F82FA4 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 83CEFDAC1913DD0B00F82FA4 /* Images.xcassets */; }; 18 | 83CEFDB41913DD0B00F82FA4 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83CEFDB31913DD0B00F82FA4 /* XCTest.framework */; }; 19 | 83CEFDB51913DD0B00F82FA4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83CEFD941913DD0B00F82FA4 /* Foundation.framework */; }; 20 | 83CEFDB61913DD0B00F82FA4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83CEFD981913DD0B00F82FA4 /* UIKit.framework */; }; 21 | 83CEFDBE1913DD0B00F82FA4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 83CEFDBC1913DD0B00F82FA4 /* InfoPlist.strings */; }; 22 | 83CEFDC01913DD0B00F82FA4 /* InteractiveAnimationsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 83CEFDBF1913DD0B00F82FA4 /* InteractiveAnimationsTests.m */; }; 23 | 83CEFDCB1913DEB800F82FA4 /* DraggableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 83CEFDC91913DEB800F82FA4 /* DraggableView.m */; }; 24 | F1AE8558256B4B169F0285A6 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 958845682ED947B48E0DCF41 /* libPods.a */; }; 25 | /* End PBXBuildFile section */ 26 | 27 | /* Begin PBXContainerItemProxy section */ 28 | 83CEFDB71913DD0B00F82FA4 /* PBXContainerItemProxy */ = { 29 | isa = PBXContainerItemProxy; 30 | containerPortal = 83CEFD891913DD0B00F82FA4 /* Project object */; 31 | proxyType = 1; 32 | remoteGlobalIDString = 83CEFD901913DD0B00F82FA4; 33 | remoteInfo = InteractiveAnimations; 34 | }; 35 | /* End PBXContainerItemProxy section */ 36 | 37 | /* Begin PBXFileReference section */ 38 | 349B4C02806042B7BA41B98B /* Pods.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.xcconfig; path = Pods/Pods.xcconfig; sourceTree = ""; }; 39 | 83CEFD911913DD0B00F82FA4 /* InteractiveAnimations.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = InteractiveAnimations.app; sourceTree = BUILT_PRODUCTS_DIR; }; 40 | 83CEFD941913DD0B00F82FA4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 41 | 83CEFD961913DD0B00F82FA4 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 42 | 83CEFD981913DD0B00F82FA4 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 43 | 83CEFD9C1913DD0B00F82FA4 /* InteractiveAnimations-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "InteractiveAnimations-Info.plist"; sourceTree = ""; }; 44 | 83CEFD9E1913DD0B00F82FA4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 45 | 83CEFDA01913DD0B00F82FA4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 46 | 83CEFDA21913DD0B00F82FA4 /* InteractiveAnimations-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "InteractiveAnimations-Prefix.pch"; sourceTree = ""; }; 47 | 83CEFDA31913DD0B00F82FA4 /* UINTAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UINTAppDelegate.h; sourceTree = ""; }; 48 | 83CEFDA41913DD0B00F82FA4 /* UINTAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UINTAppDelegate.m; sourceTree = ""; }; 49 | 83CEFDA91913DD0B00F82FA4 /* UINTViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UINTViewController.h; sourceTree = ""; }; 50 | 83CEFDAA1913DD0B00F82FA4 /* UINTViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UINTViewController.m; sourceTree = ""; }; 51 | 83CEFDAC1913DD0B00F82FA4 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 52 | 83CEFDB21913DD0B00F82FA4 /* InteractiveAnimationsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = InteractiveAnimationsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 53 | 83CEFDB31913DD0B00F82FA4 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 54 | 83CEFDBB1913DD0B00F82FA4 /* InteractiveAnimationsTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "InteractiveAnimationsTests-Info.plist"; sourceTree = ""; }; 55 | 83CEFDBD1913DD0B00F82FA4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 56 | 83CEFDBF1913DD0B00F82FA4 /* InteractiveAnimationsTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InteractiveAnimationsTests.m; sourceTree = ""; }; 57 | 83CEFDC91913DEB800F82FA4 /* DraggableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DraggableView.m; sourceTree = ""; }; 58 | 83CEFDCA1913DEB800F82FA4 /* DraggableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DraggableView.h; sourceTree = ""; }; 59 | 958845682ED947B48E0DCF41 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; 60 | /* End PBXFileReference section */ 61 | 62 | /* Begin PBXFrameworksBuildPhase section */ 63 | 83CEFD8E1913DD0B00F82FA4 /* Frameworks */ = { 64 | isa = PBXFrameworksBuildPhase; 65 | buildActionMask = 2147483647; 66 | files = ( 67 | 83CEFD971913DD0B00F82FA4 /* CoreGraphics.framework in Frameworks */, 68 | 83CEFD991913DD0B00F82FA4 /* UIKit.framework in Frameworks */, 69 | 83CEFD951913DD0B00F82FA4 /* Foundation.framework in Frameworks */, 70 | F1AE8558256B4B169F0285A6 /* libPods.a in Frameworks */, 71 | ); 72 | runOnlyForDeploymentPostprocessing = 0; 73 | }; 74 | 83CEFDAF1913DD0B00F82FA4 /* Frameworks */ = { 75 | isa = PBXFrameworksBuildPhase; 76 | buildActionMask = 2147483647; 77 | files = ( 78 | 83CEFDB41913DD0B00F82FA4 /* XCTest.framework in Frameworks */, 79 | 83CEFDB61913DD0B00F82FA4 /* UIKit.framework in Frameworks */, 80 | 83CEFDB51913DD0B00F82FA4 /* Foundation.framework in Frameworks */, 81 | ); 82 | runOnlyForDeploymentPostprocessing = 0; 83 | }; 84 | /* End PBXFrameworksBuildPhase section */ 85 | 86 | /* Begin PBXGroup section */ 87 | 83CEFD881913DD0B00F82FA4 = { 88 | isa = PBXGroup; 89 | children = ( 90 | 83CEFD9A1913DD0B00F82FA4 /* InteractiveAnimations */, 91 | 83CEFDB91913DD0B00F82FA4 /* InteractiveAnimationsTests */, 92 | 83CEFD931913DD0B00F82FA4 /* Frameworks */, 93 | 83CEFD921913DD0B00F82FA4 /* Products */, 94 | 349B4C02806042B7BA41B98B /* Pods.xcconfig */, 95 | ); 96 | sourceTree = ""; 97 | }; 98 | 83CEFD921913DD0B00F82FA4 /* Products */ = { 99 | isa = PBXGroup; 100 | children = ( 101 | 83CEFD911913DD0B00F82FA4 /* InteractiveAnimations.app */, 102 | 83CEFDB21913DD0B00F82FA4 /* InteractiveAnimationsTests.xctest */, 103 | ); 104 | name = Products; 105 | sourceTree = ""; 106 | }; 107 | 83CEFD931913DD0B00F82FA4 /* Frameworks */ = { 108 | isa = PBXGroup; 109 | children = ( 110 | 83CEFD941913DD0B00F82FA4 /* Foundation.framework */, 111 | 83CEFD961913DD0B00F82FA4 /* CoreGraphics.framework */, 112 | 83CEFD981913DD0B00F82FA4 /* UIKit.framework */, 113 | 83CEFDB31913DD0B00F82FA4 /* XCTest.framework */, 114 | 958845682ED947B48E0DCF41 /* libPods.a */, 115 | ); 116 | name = Frameworks; 117 | sourceTree = ""; 118 | }; 119 | 83CEFD9A1913DD0B00F82FA4 /* InteractiveAnimations */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | 83CEFDA31913DD0B00F82FA4 /* UINTAppDelegate.h */, 123 | 83CEFDA41913DD0B00F82FA4 /* UINTAppDelegate.m */, 124 | 83CEFDA91913DD0B00F82FA4 /* UINTViewController.h */, 125 | 83CEFDAA1913DD0B00F82FA4 /* UINTViewController.m */, 126 | 83CEFDC91913DEB800F82FA4 /* DraggableView.m */, 127 | 83CEFDCA1913DEB800F82FA4 /* DraggableView.h */, 128 | 83CEFDAC1913DD0B00F82FA4 /* Images.xcassets */, 129 | 83CEFD9B1913DD0B00F82FA4 /* Supporting Files */, 130 | ); 131 | path = InteractiveAnimations; 132 | sourceTree = ""; 133 | }; 134 | 83CEFD9B1913DD0B00F82FA4 /* Supporting Files */ = { 135 | isa = PBXGroup; 136 | children = ( 137 | 83CEFD9C1913DD0B00F82FA4 /* InteractiveAnimations-Info.plist */, 138 | 83CEFD9D1913DD0B00F82FA4 /* InfoPlist.strings */, 139 | 83CEFDA01913DD0B00F82FA4 /* main.m */, 140 | 83CEFDA21913DD0B00F82FA4 /* InteractiveAnimations-Prefix.pch */, 141 | ); 142 | name = "Supporting Files"; 143 | sourceTree = ""; 144 | }; 145 | 83CEFDB91913DD0B00F82FA4 /* InteractiveAnimationsTests */ = { 146 | isa = PBXGroup; 147 | children = ( 148 | 83CEFDBF1913DD0B00F82FA4 /* InteractiveAnimationsTests.m */, 149 | 83CEFDBA1913DD0B00F82FA4 /* Supporting Files */, 150 | ); 151 | path = InteractiveAnimationsTests; 152 | sourceTree = ""; 153 | }; 154 | 83CEFDBA1913DD0B00F82FA4 /* Supporting Files */ = { 155 | isa = PBXGroup; 156 | children = ( 157 | 83CEFDBB1913DD0B00F82FA4 /* InteractiveAnimationsTests-Info.plist */, 158 | 83CEFDBC1913DD0B00F82FA4 /* InfoPlist.strings */, 159 | ); 160 | name = "Supporting Files"; 161 | sourceTree = ""; 162 | }; 163 | /* End PBXGroup section */ 164 | 165 | /* Begin PBXNativeTarget section */ 166 | 83CEFD901913DD0B00F82FA4 /* InteractiveAnimations */ = { 167 | isa = PBXNativeTarget; 168 | buildConfigurationList = 83CEFDC31913DD0C00F82FA4 /* Build configuration list for PBXNativeTarget "InteractiveAnimations" */; 169 | buildPhases = ( 170 | 7132C0D95B7648AF9259B8A8 /* Check Pods Manifest.lock */, 171 | 83CEFD8D1913DD0B00F82FA4 /* Sources */, 172 | 83CEFD8E1913DD0B00F82FA4 /* Frameworks */, 173 | 83CEFD8F1913DD0B00F82FA4 /* Resources */, 174 | EABDD6C66F8144E1925DAF20 /* Copy Pods Resources */, 175 | ); 176 | buildRules = ( 177 | ); 178 | dependencies = ( 179 | ); 180 | name = InteractiveAnimations; 181 | productName = InteractiveAnimations; 182 | productReference = 83CEFD911913DD0B00F82FA4 /* InteractiveAnimations.app */; 183 | productType = "com.apple.product-type.application"; 184 | }; 185 | 83CEFDB11913DD0B00F82FA4 /* InteractiveAnimationsTests */ = { 186 | isa = PBXNativeTarget; 187 | buildConfigurationList = 83CEFDC61913DD0C00F82FA4 /* Build configuration list for PBXNativeTarget "InteractiveAnimationsTests" */; 188 | buildPhases = ( 189 | 83CEFDAE1913DD0B00F82FA4 /* Sources */, 190 | 83CEFDAF1913DD0B00F82FA4 /* Frameworks */, 191 | 83CEFDB01913DD0B00F82FA4 /* Resources */, 192 | ); 193 | buildRules = ( 194 | ); 195 | dependencies = ( 196 | 83CEFDB81913DD0B00F82FA4 /* PBXTargetDependency */, 197 | ); 198 | name = InteractiveAnimationsTests; 199 | productName = InteractiveAnimationsTests; 200 | productReference = 83CEFDB21913DD0B00F82FA4 /* InteractiveAnimationsTests.xctest */; 201 | productType = "com.apple.product-type.bundle.unit-test"; 202 | }; 203 | /* End PBXNativeTarget section */ 204 | 205 | /* Begin PBXProject section */ 206 | 83CEFD891913DD0B00F82FA4 /* Project object */ = { 207 | isa = PBXProject; 208 | attributes = { 209 | CLASSPREFIX = UINT; 210 | LastUpgradeCheck = 0510; 211 | ORGANIZATIONNAME = "Unsigned Integer"; 212 | TargetAttributes = { 213 | 83CEFDB11913DD0B00F82FA4 = { 214 | TestTargetID = 83CEFD901913DD0B00F82FA4; 215 | }; 216 | }; 217 | }; 218 | buildConfigurationList = 83CEFD8C1913DD0B00F82FA4 /* Build configuration list for PBXProject "InteractiveAnimations" */; 219 | compatibilityVersion = "Xcode 3.2"; 220 | developmentRegion = English; 221 | hasScannedForEncodings = 0; 222 | knownRegions = ( 223 | en, 224 | Base, 225 | ); 226 | mainGroup = 83CEFD881913DD0B00F82FA4; 227 | productRefGroup = 83CEFD921913DD0B00F82FA4 /* Products */; 228 | projectDirPath = ""; 229 | projectReferences = ( 230 | ); 231 | projectRoot = ""; 232 | targets = ( 233 | 83CEFD901913DD0B00F82FA4 /* InteractiveAnimations */, 234 | 83CEFDB11913DD0B00F82FA4 /* InteractiveAnimationsTests */, 235 | ); 236 | }; 237 | /* End PBXProject section */ 238 | 239 | /* Begin PBXResourcesBuildPhase section */ 240 | 83CEFD8F1913DD0B00F82FA4 /* Resources */ = { 241 | isa = PBXResourcesBuildPhase; 242 | buildActionMask = 2147483647; 243 | files = ( 244 | 83CEFDAD1913DD0B00F82FA4 /* Images.xcassets in Resources */, 245 | 83CEFD9F1913DD0B00F82FA4 /* InfoPlist.strings in Resources */, 246 | ); 247 | runOnlyForDeploymentPostprocessing = 0; 248 | }; 249 | 83CEFDB01913DD0B00F82FA4 /* Resources */ = { 250 | isa = PBXResourcesBuildPhase; 251 | buildActionMask = 2147483647; 252 | files = ( 253 | 83CEFDBE1913DD0B00F82FA4 /* InfoPlist.strings in Resources */, 254 | ); 255 | runOnlyForDeploymentPostprocessing = 0; 256 | }; 257 | /* End PBXResourcesBuildPhase section */ 258 | 259 | /* Begin PBXShellScriptBuildPhase section */ 260 | 7132C0D95B7648AF9259B8A8 /* Check Pods Manifest.lock */ = { 261 | isa = PBXShellScriptBuildPhase; 262 | buildActionMask = 2147483647; 263 | files = ( 264 | ); 265 | inputPaths = ( 266 | ); 267 | name = "Check Pods Manifest.lock"; 268 | outputPaths = ( 269 | ); 270 | runOnlyForDeploymentPostprocessing = 0; 271 | shellPath = /bin/sh; 272 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; 273 | showEnvVarsInLog = 0; 274 | }; 275 | EABDD6C66F8144E1925DAF20 /* Copy Pods Resources */ = { 276 | isa = PBXShellScriptBuildPhase; 277 | buildActionMask = 2147483647; 278 | files = ( 279 | ); 280 | inputPaths = ( 281 | ); 282 | name = "Copy Pods Resources"; 283 | outputPaths = ( 284 | ); 285 | runOnlyForDeploymentPostprocessing = 0; 286 | shellPath = /bin/sh; 287 | shellScript = "\"${SRCROOT}/Pods/Pods-resources.sh\"\n"; 288 | showEnvVarsInLog = 0; 289 | }; 290 | /* End PBXShellScriptBuildPhase section */ 291 | 292 | /* Begin PBXSourcesBuildPhase section */ 293 | 83CEFD8D1913DD0B00F82FA4 /* Sources */ = { 294 | isa = PBXSourcesBuildPhase; 295 | buildActionMask = 2147483647; 296 | files = ( 297 | 83CEFDA51913DD0B00F82FA4 /* UINTAppDelegate.m in Sources */, 298 | 83CEFDA11913DD0B00F82FA4 /* main.m in Sources */, 299 | 83CEFDCB1913DEB800F82FA4 /* DraggableView.m in Sources */, 300 | 83CEFDAB1913DD0B00F82FA4 /* UINTViewController.m in Sources */, 301 | ); 302 | runOnlyForDeploymentPostprocessing = 0; 303 | }; 304 | 83CEFDAE1913DD0B00F82FA4 /* Sources */ = { 305 | isa = PBXSourcesBuildPhase; 306 | buildActionMask = 2147483647; 307 | files = ( 308 | 83CEFDC01913DD0B00F82FA4 /* InteractiveAnimationsTests.m in Sources */, 309 | ); 310 | runOnlyForDeploymentPostprocessing = 0; 311 | }; 312 | /* End PBXSourcesBuildPhase section */ 313 | 314 | /* Begin PBXTargetDependency section */ 315 | 83CEFDB81913DD0B00F82FA4 /* PBXTargetDependency */ = { 316 | isa = PBXTargetDependency; 317 | target = 83CEFD901913DD0B00F82FA4 /* InteractiveAnimations */; 318 | targetProxy = 83CEFDB71913DD0B00F82FA4 /* PBXContainerItemProxy */; 319 | }; 320 | /* End PBXTargetDependency section */ 321 | 322 | /* Begin PBXVariantGroup section */ 323 | 83CEFD9D1913DD0B00F82FA4 /* InfoPlist.strings */ = { 324 | isa = PBXVariantGroup; 325 | children = ( 326 | 83CEFD9E1913DD0B00F82FA4 /* en */, 327 | ); 328 | name = InfoPlist.strings; 329 | sourceTree = ""; 330 | }; 331 | 83CEFDBC1913DD0B00F82FA4 /* InfoPlist.strings */ = { 332 | isa = PBXVariantGroup; 333 | children = ( 334 | 83CEFDBD1913DD0B00F82FA4 /* en */, 335 | ); 336 | name = InfoPlist.strings; 337 | sourceTree = ""; 338 | }; 339 | /* End PBXVariantGroup section */ 340 | 341 | /* Begin XCBuildConfiguration section */ 342 | 83CEFDC11913DD0C00F82FA4 /* Debug */ = { 343 | isa = XCBuildConfiguration; 344 | buildSettings = { 345 | ALWAYS_SEARCH_USER_PATHS = NO; 346 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 347 | CLANG_CXX_LIBRARY = "libc++"; 348 | CLANG_ENABLE_MODULES = YES; 349 | CLANG_ENABLE_OBJC_ARC = YES; 350 | CLANG_WARN_BOOL_CONVERSION = YES; 351 | CLANG_WARN_CONSTANT_CONVERSION = YES; 352 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 353 | CLANG_WARN_EMPTY_BODY = YES; 354 | CLANG_WARN_ENUM_CONVERSION = YES; 355 | CLANG_WARN_INT_CONVERSION = YES; 356 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 357 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 358 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 359 | COPY_PHASE_STRIP = NO; 360 | GCC_C_LANGUAGE_STANDARD = gnu99; 361 | GCC_DYNAMIC_NO_PIC = NO; 362 | GCC_OPTIMIZATION_LEVEL = 0; 363 | GCC_PREPROCESSOR_DEFINITIONS = ( 364 | "DEBUG=1", 365 | "$(inherited)", 366 | ); 367 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 368 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 369 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 370 | GCC_WARN_UNDECLARED_SELECTOR = YES; 371 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 372 | GCC_WARN_UNUSED_FUNCTION = YES; 373 | GCC_WARN_UNUSED_VARIABLE = YES; 374 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 375 | ONLY_ACTIVE_ARCH = YES; 376 | SDKROOT = iphoneos; 377 | }; 378 | name = Debug; 379 | }; 380 | 83CEFDC21913DD0C00F82FA4 /* Release */ = { 381 | isa = XCBuildConfiguration; 382 | buildSettings = { 383 | ALWAYS_SEARCH_USER_PATHS = NO; 384 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 385 | CLANG_CXX_LIBRARY = "libc++"; 386 | CLANG_ENABLE_MODULES = YES; 387 | CLANG_ENABLE_OBJC_ARC = YES; 388 | CLANG_WARN_BOOL_CONVERSION = YES; 389 | CLANG_WARN_CONSTANT_CONVERSION = YES; 390 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 391 | CLANG_WARN_EMPTY_BODY = YES; 392 | CLANG_WARN_ENUM_CONVERSION = YES; 393 | CLANG_WARN_INT_CONVERSION = YES; 394 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 395 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 396 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 397 | COPY_PHASE_STRIP = YES; 398 | ENABLE_NS_ASSERTIONS = NO; 399 | GCC_C_LANGUAGE_STANDARD = gnu99; 400 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 401 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 402 | GCC_WARN_UNDECLARED_SELECTOR = YES; 403 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 404 | GCC_WARN_UNUSED_FUNCTION = YES; 405 | GCC_WARN_UNUSED_VARIABLE = YES; 406 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 407 | SDKROOT = iphoneos; 408 | VALIDATE_PRODUCT = YES; 409 | }; 410 | name = Release; 411 | }; 412 | 83CEFDC41913DD0C00F82FA4 /* Debug */ = { 413 | isa = XCBuildConfiguration; 414 | baseConfigurationReference = 349B4C02806042B7BA41B98B /* Pods.xcconfig */; 415 | buildSettings = { 416 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 417 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 418 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 419 | GCC_PREFIX_HEADER = "InteractiveAnimations/InteractiveAnimations-Prefix.pch"; 420 | INFOPLIST_FILE = "InteractiveAnimations/InteractiveAnimations-Info.plist"; 421 | PRODUCT_NAME = "$(TARGET_NAME)"; 422 | WRAPPER_EXTENSION = app; 423 | }; 424 | name = Debug; 425 | }; 426 | 83CEFDC51913DD0C00F82FA4 /* Release */ = { 427 | isa = XCBuildConfiguration; 428 | baseConfigurationReference = 349B4C02806042B7BA41B98B /* Pods.xcconfig */; 429 | buildSettings = { 430 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 431 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 432 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 433 | GCC_PREFIX_HEADER = "InteractiveAnimations/InteractiveAnimations-Prefix.pch"; 434 | INFOPLIST_FILE = "InteractiveAnimations/InteractiveAnimations-Info.plist"; 435 | PRODUCT_NAME = "$(TARGET_NAME)"; 436 | WRAPPER_EXTENSION = app; 437 | }; 438 | name = Release; 439 | }; 440 | 83CEFDC71913DD0C00F82FA4 /* Debug */ = { 441 | isa = XCBuildConfiguration; 442 | buildSettings = { 443 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/InteractiveAnimations.app/InteractiveAnimations"; 444 | FRAMEWORK_SEARCH_PATHS = ( 445 | "$(SDKROOT)/Developer/Library/Frameworks", 446 | "$(inherited)", 447 | "$(DEVELOPER_FRAMEWORKS_DIR)", 448 | ); 449 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 450 | GCC_PREFIX_HEADER = "InteractiveAnimations/InteractiveAnimations-Prefix.pch"; 451 | GCC_PREPROCESSOR_DEFINITIONS = ( 452 | "DEBUG=1", 453 | "$(inherited)", 454 | ); 455 | INFOPLIST_FILE = "InteractiveAnimationsTests/InteractiveAnimationsTests-Info.plist"; 456 | PRODUCT_NAME = "$(TARGET_NAME)"; 457 | TEST_HOST = "$(BUNDLE_LOADER)"; 458 | WRAPPER_EXTENSION = xctest; 459 | }; 460 | name = Debug; 461 | }; 462 | 83CEFDC81913DD0C00F82FA4 /* Release */ = { 463 | isa = XCBuildConfiguration; 464 | buildSettings = { 465 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/InteractiveAnimations.app/InteractiveAnimations"; 466 | FRAMEWORK_SEARCH_PATHS = ( 467 | "$(SDKROOT)/Developer/Library/Frameworks", 468 | "$(inherited)", 469 | "$(DEVELOPER_FRAMEWORKS_DIR)", 470 | ); 471 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 472 | GCC_PREFIX_HEADER = "InteractiveAnimations/InteractiveAnimations-Prefix.pch"; 473 | INFOPLIST_FILE = "InteractiveAnimationsTests/InteractiveAnimationsTests-Info.plist"; 474 | PRODUCT_NAME = "$(TARGET_NAME)"; 475 | TEST_HOST = "$(BUNDLE_LOADER)"; 476 | WRAPPER_EXTENSION = xctest; 477 | }; 478 | name = Release; 479 | }; 480 | /* End XCBuildConfiguration section */ 481 | 482 | /* Begin XCConfigurationList section */ 483 | 83CEFD8C1913DD0B00F82FA4 /* Build configuration list for PBXProject "InteractiveAnimations" */ = { 484 | isa = XCConfigurationList; 485 | buildConfigurations = ( 486 | 83CEFDC11913DD0C00F82FA4 /* Debug */, 487 | 83CEFDC21913DD0C00F82FA4 /* Release */, 488 | ); 489 | defaultConfigurationIsVisible = 0; 490 | defaultConfigurationName = Release; 491 | }; 492 | 83CEFDC31913DD0C00F82FA4 /* Build configuration list for PBXNativeTarget "InteractiveAnimations" */ = { 493 | isa = XCConfigurationList; 494 | buildConfigurations = ( 495 | 83CEFDC41913DD0C00F82FA4 /* Debug */, 496 | 83CEFDC51913DD0C00F82FA4 /* Release */, 497 | ); 498 | defaultConfigurationIsVisible = 0; 499 | defaultConfigurationName = Release; 500 | }; 501 | 83CEFDC61913DD0C00F82FA4 /* Build configuration list for PBXNativeTarget "InteractiveAnimationsTests" */ = { 502 | isa = XCConfigurationList; 503 | buildConfigurations = ( 504 | 83CEFDC71913DD0C00F82FA4 /* Debug */, 505 | 83CEFDC81913DD0C00F82FA4 /* Release */, 506 | ); 507 | defaultConfigurationIsVisible = 0; 508 | defaultConfigurationName = Release; 509 | }; 510 | /* End XCConfigurationList section */ 511 | }; 512 | rootObject = 83CEFD891913DD0B00F82FA4 /* Project object */; 513 | } 514 | -------------------------------------------------------------------------------- /InteractiveAnimations.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /InteractiveAnimations/DraggableView.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Florian on 21/04/14. 3 | // 4 | // To change the template use AppCode | Preferences | File Templates. 5 | // 6 | 7 | 8 | #import 9 | 10 | 11 | @class DraggableView; 12 | 13 | 14 | @protocol DraggableViewDelegate 15 | 16 | - (void)draggableView:(DraggableView *)view draggingEndedWithVelocity:(CGPoint)velocity; 17 | - (void)draggableViewBeganDragging:(DraggableView *)view; 18 | 19 | @end 20 | 21 | 22 | @interface DraggableView : UIView 23 | 24 | @property (nonatomic, weak) id delegate; 25 | 26 | @end -------------------------------------------------------------------------------- /InteractiveAnimations/DraggableView.m: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Florian on 21/04/14. 3 | // 4 | // To change the template use AppCode | Preferences | File Templates. 5 | // 6 | 7 | 8 | #import "DraggableView.h" 9 | 10 | @implementation DraggableView 11 | 12 | - (id)initWithFrame:(CGRect)frame 13 | { 14 | self = [super initWithFrame:frame]; 15 | if (self) { 16 | [self setup]; 17 | } 18 | return self; 19 | } 20 | 21 | - (void)setup 22 | { 23 | UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(didPan:)]; 24 | [self addGestureRecognizer:recognizer]; 25 | self.layer.cornerRadius = 6; 26 | } 27 | 28 | - (void)didPan:(UIPanGestureRecognizer *)recognizer 29 | { 30 | CGPoint point = [recognizer translationInView:self.superview]; 31 | self.center = CGPointMake(self.center.x, self.center.y + point.y); 32 | [recognizer setTranslation:CGPointZero inView:self.superview]; 33 | if (recognizer.state == UIGestureRecognizerStateEnded) { 34 | CGPoint velocity = [recognizer velocityInView:self.superview]; 35 | velocity.x = 0; 36 | [self.delegate draggableView:self draggingEndedWithVelocity:velocity]; 37 | } else if (recognizer.state == UIGestureRecognizerStateBegan) { 38 | [self.delegate draggableViewBeganDragging:self]; 39 | } 40 | } 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /InteractiveAnimations/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "40x40", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "60x60", 16 | "scale" : "2x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /InteractiveAnimations/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /InteractiveAnimations/InteractiveAnimations-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | com.unsignedinteger.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /InteractiveAnimations/InteractiveAnimations-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /InteractiveAnimations/UINTAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINTAppDelegate.h 3 | // InteractiveAnimations 4 | // 5 | // Created by Chris Eidhof on 02.05.14. 6 | // Copyright (c) 2014 Unsigned Integer. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINTAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /InteractiveAnimations/UINTAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // UINTAppDelegate.m 3 | // InteractiveAnimations 4 | // 5 | // Created by Chris Eidhof on 02.05.14. 6 | // Copyright (c) 2014 Unsigned Integer. All rights reserved. 7 | // 8 | 9 | #import "UINTAppDelegate.h" 10 | #import "UINTViewController.h" 11 | 12 | @implementation UINTAppDelegate 13 | 14 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 15 | { 16 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 17 | UINTViewController *viewController = [[UINTViewController alloc] init]; 18 | self.window.rootViewController = viewController; 19 | [self.window makeKeyAndVisible]; 20 | return YES; 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /InteractiveAnimations/UINTViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINTViewController.h 3 | // InteractiveAnimations 4 | // 5 | // Created by Chris Eidhof on 02.05.14. 6 | // Copyright (c) 2014 Unsigned Integer. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class UINTAnimator; 12 | @class UINTSpringAnimation; 13 | @class POPSpringAnimation; 14 | 15 | 16 | @interface UINTViewController : UIViewController 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /InteractiveAnimations/UINTViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // UINTViewController.m 3 | // InteractiveAnimations 4 | // 5 | // Created by Chris Eidhof on 02.05.14. 6 | // Copyright (c) 2014 Unsigned Integer. All rights reserved. 7 | // 8 | 9 | #import "UINTViewController.h" 10 | #import "DraggableView.h" 11 | #import "POPSpringAnimation.h" 12 | 13 | 14 | typedef NS_ENUM(NSInteger, PaneState) { 15 | PaneStateOpen, 16 | PaneStateClosed, 17 | }; 18 | 19 | @interface UINTViewController () 20 | 21 | @property (nonatomic) PaneState paneState; 22 | @property (nonatomic, strong) DraggableView *pane; 23 | @property (nonatomic, strong) POPSpringAnimation *animation; 24 | @end 25 | 26 | @implementation UINTViewController 27 | 28 | - (void)viewDidLoad 29 | { 30 | [super viewDidLoad]; 31 | self.view.backgroundColor = [UIColor whiteColor]; 32 | 33 | CGSize size = self.view.bounds.size; 34 | self.paneState = PaneStateClosed; 35 | DraggableView *view = [[DraggableView alloc] initWithFrame:CGRectMake(0, size.height * .75, size.width, size.height)]; 36 | view.backgroundColor = [UIColor grayColor]; 37 | view.delegate = self; 38 | [self.view addSubview:view]; 39 | self.pane = view; 40 | 41 | UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap:)]; 42 | [self.view addGestureRecognizer:tapRecognizer]; 43 | } 44 | 45 | - (CGPoint)targetPoint 46 | { 47 | CGSize size = self.view.bounds.size; 48 | return self.paneState == PaneStateClosed > 0 ? CGPointMake(size.width/2, size.height * 1.25) : CGPointMake(size.width/2, size.height/2 + 50); 49 | } 50 | 51 | - (void)animatePaneWithInitialVelocity:(CGPoint)initialVelocity 52 | { 53 | [self.pane pop_removeAllAnimations]; 54 | POPSpringAnimation *animation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; 55 | animation.velocity = [NSValue valueWithCGPoint:initialVelocity]; 56 | animation.toValue = [NSValue valueWithCGPoint:self.targetPoint]; 57 | animation.springSpeed = 15; 58 | animation.springBounciness = 6; 59 | [self.pane pop_addAnimation:animation forKey:@"animation"]; 60 | self.animation = animation; 61 | } 62 | 63 | 64 | #pragma mark DraggableViewDelegate 65 | 66 | - (void)draggableView:(DraggableView *)view draggingEndedWithVelocity:(CGPoint)velocity 67 | { 68 | self.paneState = velocity.y >= 0 ? PaneStateClosed : PaneStateOpen; 69 | [self animatePaneWithInitialVelocity:velocity]; 70 | } 71 | 72 | - (void)draggableViewBeganDragging:(DraggableView *)view 73 | { 74 | [view.layer pop_removeAllAnimations]; 75 | } 76 | 77 | 78 | #pragma mark Actions 79 | 80 | - (void)didTap:(UITapGestureRecognizer *)tapRecognizer 81 | { 82 | self.paneState = self.paneState == PaneStateOpen ? PaneStateClosed : PaneStateOpen; 83 | [self animatePaneWithInitialVelocity:[self.animation.velocity CGPointValue]]; 84 | } 85 | 86 | @end 87 | -------------------------------------------------------------------------------- /InteractiveAnimations/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /InteractiveAnimations/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // InteractiveAnimations 4 | // 5 | // Created by Chris Eidhof on 02.05.14. 6 | // Copyright (c) 2014 Unsigned Integer. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "UINTAppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([UINTAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /InteractiveAnimationsTests/InteractiveAnimationsTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | com.unsignedinteger.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /InteractiveAnimationsTests/InteractiveAnimationsTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // InteractiveAnimationsTests.m 3 | // InteractiveAnimationsTests 4 | // 5 | // Created by Chris Eidhof on 02.05.14. 6 | // Copyright (c) 2014 Unsigned Integer. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface InteractiveAnimationsTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation InteractiveAnimationsTests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /InteractiveAnimationsTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | pod 'pop', '~> 1.0' 2 | --------------------------------------------------------------------------------