From d18f961e728ac574527896016c47285b4da92634 Mon Sep 17 00:00:00 2001 From: Jeames Bone Date: Mon, 25 Nov 2013 12:40:56 +1100 Subject: [PATCH] Initial Commit --- .../EasyAnimations.xcodeproj/project.pbxproj | 309 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 38163 bytes .../xcschemes/EasyAnimations.xcscheme | 86 +++++ .../xcschemes/xcschememanagement.plist | 32 ++ .../EasyAnimations/Default-568h@2x.png | Bin 0 -> 18594 bytes EasyAnimations/EasyAnimations/Default.png | Bin 0 -> 6540 bytes EasyAnimations/EasyAnimations/Default@2x.png | Bin 0 -> 16107 bytes EasyAnimations/EasyAnimations/EAAnimations.h | 19 ++ EasyAnimations/EasyAnimations/EAAnimations.m | 42 +++ EasyAnimations/EasyAnimations/EAAppDelegate.h | 15 + EasyAnimations/EasyAnimations/EAAppDelegate.m | 46 +++ .../EasyAnimations/EAViewController.h | 15 + .../EasyAnimations/EAViewController.m | 33 ++ .../EasyAnimations/EasyAnimations-Info.plist | 40 +++ .../EasyAnimations/EasyAnimations-Prefix.pch | 14 + .../EasyAnimations/en.lproj/InfoPlist.strings | 2 + .../en.lproj/MainStoryboard.storyboard | 52 +++ EasyAnimations/EasyAnimations/main.m | 18 + 19 files changed, 730 insertions(+) create mode 100644 EasyAnimations/EasyAnimations.xcodeproj/project.pbxproj create mode 100644 EasyAnimations/EasyAnimations.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 EasyAnimations/EasyAnimations.xcodeproj/project.xcworkspace/xcuserdata/jeames.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 EasyAnimations/EasyAnimations.xcodeproj/xcuserdata/jeames.xcuserdatad/xcschemes/EasyAnimations.xcscheme create mode 100644 EasyAnimations/EasyAnimations.xcodeproj/xcuserdata/jeames.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 EasyAnimations/EasyAnimations/Default-568h@2x.png create mode 100644 EasyAnimations/EasyAnimations/Default.png create mode 100644 EasyAnimations/EasyAnimations/Default@2x.png create mode 100644 EasyAnimations/EasyAnimations/EAAnimations.h create mode 100644 EasyAnimations/EasyAnimations/EAAnimations.m create mode 100644 EasyAnimations/EasyAnimations/EAAppDelegate.h create mode 100644 EasyAnimations/EasyAnimations/EAAppDelegate.m create mode 100644 EasyAnimations/EasyAnimations/EAViewController.h create mode 100644 EasyAnimations/EasyAnimations/EAViewController.m create mode 100644 EasyAnimations/EasyAnimations/EasyAnimations-Info.plist create mode 100644 EasyAnimations/EasyAnimations/EasyAnimations-Prefix.pch create mode 100644 EasyAnimations/EasyAnimations/en.lproj/InfoPlist.strings create mode 100644 EasyAnimations/EasyAnimations/en.lproj/MainStoryboard.storyboard create mode 100644 EasyAnimations/EasyAnimations/main.m diff --git a/EasyAnimations/EasyAnimations.xcodeproj/project.pbxproj b/EasyAnimations/EasyAnimations.xcodeproj/project.pbxproj new file mode 100644 index 0000000..f7af6f2 --- /dev/null +++ b/EasyAnimations/EasyAnimations.xcodeproj/project.pbxproj @@ -0,0 +1,309 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + EB374D581663014E00A317C1 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB374D571663014E00A317C1 /* UIKit.framework */; }; + EB374D5A1663014E00A317C1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB374D591663014E00A317C1 /* Foundation.framework */; }; + EB374D5C1663014E00A317C1 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB374D5B1663014E00A317C1 /* CoreGraphics.framework */; }; + EB374D621663014E00A317C1 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = EB374D601663014E00A317C1 /* InfoPlist.strings */; }; + EB374D641663014E00A317C1 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = EB374D631663014E00A317C1 /* main.m */; }; + EB374D681663014E00A317C1 /* EAAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EB374D671663014E00A317C1 /* EAAppDelegate.m */; }; + EB374D6A1663014E00A317C1 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = EB374D691663014E00A317C1 /* Default.png */; }; + EB374D6C1663014E00A317C1 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = EB374D6B1663014E00A317C1 /* Default@2x.png */; }; + EB374D6E1663014E00A317C1 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = EB374D6D1663014E00A317C1 /* Default-568h@2x.png */; }; + EB374D711663014E00A317C1 /* MainStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EB374D6F1663014E00A317C1 /* MainStoryboard.storyboard */; }; + EB374D741663014E00A317C1 /* EAViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EB374D731663014E00A317C1 /* EAViewController.m */; }; + EB374D7C1663016600A317C1 /* EAAnimations.m in Sources */ = {isa = PBXBuildFile; fileRef = EB374D7B1663016600A317C1 /* EAAnimations.m */; }; + EB374D821663136500A317C1 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB374D811663136500A317C1 /* QuartzCore.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + EB374D531663014E00A317C1 /* EasyAnimations.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EasyAnimations.app; sourceTree = BUILT_PRODUCTS_DIR; }; + EB374D571663014E00A317C1 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + EB374D591663014E00A317C1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + EB374D5B1663014E00A317C1 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + EB374D5F1663014E00A317C1 /* EasyAnimations-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EasyAnimations-Info.plist"; sourceTree = ""; }; + EB374D611663014E00A317C1 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + EB374D631663014E00A317C1 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + EB374D651663014E00A317C1 /* EasyAnimations-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "EasyAnimations-Prefix.pch"; sourceTree = ""; }; + EB374D661663014E00A317C1 /* EAAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EAAppDelegate.h; sourceTree = ""; }; + EB374D671663014E00A317C1 /* EAAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EAAppDelegate.m; sourceTree = ""; }; + EB374D691663014E00A317C1 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + EB374D6B1663014E00A317C1 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; + EB374D6D1663014E00A317C1 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + EB374D701663014E00A317C1 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard.storyboard; sourceTree = ""; }; + EB374D721663014E00A317C1 /* EAViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EAViewController.h; sourceTree = ""; }; + EB374D731663014E00A317C1 /* EAViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EAViewController.m; sourceTree = ""; }; + EB374D7A1663016600A317C1 /* EAAnimations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EAAnimations.h; sourceTree = ""; }; + EB374D7B1663016600A317C1 /* EAAnimations.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EAAnimations.m; sourceTree = ""; }; + EB374D811663136500A317C1 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + EB374D501663014E00A317C1 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EB374D821663136500A317C1 /* QuartzCore.framework in Frameworks */, + EB374D581663014E00A317C1 /* UIKit.framework in Frameworks */, + EB374D5A1663014E00A317C1 /* Foundation.framework in Frameworks */, + EB374D5C1663014E00A317C1 /* CoreGraphics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + EB374D481663014D00A317C1 = { + isa = PBXGroup; + children = ( + EB374D5D1663014E00A317C1 /* EasyAnimations */, + EB374D561663014E00A317C1 /* Frameworks */, + EB374D541663014E00A317C1 /* Products */, + ); + sourceTree = ""; + }; + EB374D541663014E00A317C1 /* Products */ = { + isa = PBXGroup; + children = ( + EB374D531663014E00A317C1 /* EasyAnimations.app */, + ); + name = Products; + sourceTree = ""; + }; + EB374D561663014E00A317C1 /* Frameworks */ = { + isa = PBXGroup; + children = ( + EB374D811663136500A317C1 /* QuartzCore.framework */, + EB374D571663014E00A317C1 /* UIKit.framework */, + EB374D591663014E00A317C1 /* Foundation.framework */, + EB374D5B1663014E00A317C1 /* CoreGraphics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + EB374D5D1663014E00A317C1 /* EasyAnimations */ = { + isa = PBXGroup; + children = ( + EB374D661663014E00A317C1 /* EAAppDelegate.h */, + EB374D671663014E00A317C1 /* EAAppDelegate.m */, + EB374D6F1663014E00A317C1 /* MainStoryboard.storyboard */, + EB374D721663014E00A317C1 /* EAViewController.h */, + EB374D731663014E00A317C1 /* EAViewController.m */, + EB374D7A1663016600A317C1 /* EAAnimations.h */, + EB374D7B1663016600A317C1 /* EAAnimations.m */, + EB374D5E1663014E00A317C1 /* Supporting Files */, + ); + path = EasyAnimations; + sourceTree = ""; + }; + EB374D5E1663014E00A317C1 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + EB374D5F1663014E00A317C1 /* EasyAnimations-Info.plist */, + EB374D601663014E00A317C1 /* InfoPlist.strings */, + EB374D631663014E00A317C1 /* main.m */, + EB374D651663014E00A317C1 /* EasyAnimations-Prefix.pch */, + EB374D691663014E00A317C1 /* Default.png */, + EB374D6B1663014E00A317C1 /* Default@2x.png */, + EB374D6D1663014E00A317C1 /* Default-568h@2x.png */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + EB374D521663014E00A317C1 /* EasyAnimations */ = { + isa = PBXNativeTarget; + buildConfigurationList = EB374D771663014E00A317C1 /* Build configuration list for PBXNativeTarget "EasyAnimations" */; + buildPhases = ( + EB374D4F1663014E00A317C1 /* Sources */, + EB374D501663014E00A317C1 /* Frameworks */, + EB374D511663014E00A317C1 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = EasyAnimations; + productName = EasyAnimations; + productReference = EB374D531663014E00A317C1 /* EasyAnimations.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + EB374D4A1663014D00A317C1 /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = EA; + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = "Jeames Bone"; + }; + buildConfigurationList = EB374D4D1663014D00A317C1 /* Build configuration list for PBXProject "EasyAnimations" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = EB374D481663014D00A317C1; + productRefGroup = EB374D541663014E00A317C1 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + EB374D521663014E00A317C1 /* EasyAnimations */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + EB374D511663014E00A317C1 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB374D621663014E00A317C1 /* InfoPlist.strings in Resources */, + EB374D6A1663014E00A317C1 /* Default.png in Resources */, + EB374D6C1663014E00A317C1 /* Default@2x.png in Resources */, + EB374D6E1663014E00A317C1 /* Default-568h@2x.png in Resources */, + EB374D711663014E00A317C1 /* MainStoryboard.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + EB374D4F1663014E00A317C1 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB374D641663014E00A317C1 /* main.m in Sources */, + EB374D681663014E00A317C1 /* EAAppDelegate.m in Sources */, + EB374D741663014E00A317C1 /* EAViewController.m in Sources */, + EB374D7C1663016600A317C1 /* EAAnimations.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + EB374D601663014E00A317C1 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + EB374D611663014E00A317C1 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + EB374D6F1663014E00A317C1 /* MainStoryboard.storyboard */ = { + isa = PBXVariantGroup; + children = ( + EB374D701663014E00A317C1 /* en */, + ); + name = MainStoryboard.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + EB374D751663014E00A317C1 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + SDKROOT = iphoneos; + }; + name = Debug; + }; + EB374D761663014E00A317C1 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + EB374D781663014E00A317C1 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "EasyAnimations/EasyAnimations-Prefix.pch"; + INFOPLIST_FILE = "EasyAnimations/EasyAnimations-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + EB374D791663014E00A317C1 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "EasyAnimations/EasyAnimations-Prefix.pch"; + INFOPLIST_FILE = "EasyAnimations/EasyAnimations-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + EB374D4D1663014D00A317C1 /* Build configuration list for PBXProject "EasyAnimations" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EB374D751663014E00A317C1 /* Debug */, + EB374D761663014E00A317C1 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EB374D771663014E00A317C1 /* Build configuration list for PBXNativeTarget "EasyAnimations" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EB374D781663014E00A317C1 /* Debug */, + EB374D791663014E00A317C1 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = EB374D4A1663014D00A317C1 /* Project object */; +} diff --git a/EasyAnimations/EasyAnimations.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/EasyAnimations/EasyAnimations.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..eeab968 --- /dev/null +++ b/EasyAnimations/EasyAnimations.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/EasyAnimations/EasyAnimations.xcodeproj/project.xcworkspace/xcuserdata/jeames.xcuserdatad/UserInterfaceState.xcuserstate b/EasyAnimations/EasyAnimations.xcodeproj/project.xcworkspace/xcuserdata/jeames.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..d6f4762e8cee300fcfc353a9ded89c1fd5dacc6f GIT binary patch literal 38163 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 literal 0 HcmV?d00001 diff --git a/EasyAnimations/EasyAnimations.xcodeproj/xcuserdata/jeames.xcuserdatad/xcschemes/EasyAnimations.xcscheme b/EasyAnimations/EasyAnimations.xcodeproj/xcuserdata/jeames.xcuserdatad/xcschemes/EasyAnimations.xcscheme new file mode 100644 index 0000000..d4cb231 --- /dev/null +++ b/EasyAnimations/EasyAnimations.xcodeproj/xcuserdata/jeames.xcuserdatad/xcschemes/EasyAnimations.xcscheme @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/EasyAnimations/EasyAnimations.xcodeproj/xcuserdata/jeames.xcuserdatad/xcschemes/xcschememanagement.plist b/EasyAnimations/EasyAnimations.xcodeproj/xcuserdata/jeames.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..8740c39 --- /dev/null +++ b/EasyAnimations/EasyAnimations.xcodeproj/xcuserdata/jeames.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,32 @@ + + + + + SchemeUserState + + EasyAnimations.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + EB374D521663014E00A317C1 + + primary + + + EB374D87166329B900A317C1 + + primary + + + EB374DA116632A6600A317C1 + + primary + + + + + diff --git a/EasyAnimations/EasyAnimations/Default-568h@2x.png b/EasyAnimations/EasyAnimations/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0891b7aabfcf3422423b109c8beed2bab838c607 GIT binary patch literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u literal 0 HcmV?d00001 diff --git a/EasyAnimations/EasyAnimations/Default.png b/EasyAnimations/EasyAnimations/Default.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8ca6f693f96d511e9113c0eb59eec552354e42 GIT binary patch literal 6540 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ZD2OMlbkt;o0To@QwR5G2N13aCb6#|O#(=u~X z85k@CTSM>X-wqM6>&y>YB4)1;;ojbLbbV-W^iFB1wa3^zCog^LCAReC4K0-?R_2{6 zrP*)4+_uWUy3w5N52M3PW_}MFMP9a~>YLvVZ1D_k*IMQ2QT^fwzoOb(*3gH$%aYWC zkHmcab=va2<#X%jakpJ;<1@F;k__#bwtC&%^D0v(FBh9K&$sK+<}2RJS609D)17$w ztdQP8(eLM8Ka}m_IQ@3wyMKP)l=oM4-?`YS_*P?4V_ORLPxsj&7Ju#kH;>6^Kp?T7~ zl+q?{UOOqV==?+d{=)5s|M~T1mwtH@+Z^$G&eEO9JNP^AX@3jZ*J*!!>lc|1-W%fA z@AOQpXZ_Lt>rxFXrGp*zLPiW@uo_c7C{As>j zWeX)wi+LTp_)@KYZCX{j;H?|1yXT4DnlS(Fr8gyP5|uaX_gLvaW0ScZdnG7o+u{T6 zFI-%d{ls*WuCDa5UJ@|RXv&ejZe}*BMkiWY51&pnRPw(hlykSzvj6e%mYz-GdvzBD zF10?szF_~!jS=?2HyQuPCvARXAe}C}WP|yQ*>5~~=*Nxq8+HHW1~FMDRCP^TcacKuk$ z(U#REVv)D!PhJ*ecH-ELFUrfyV&*)Z)>UCOuS?yd^L@Afk>ihynYPc{^CRwu+JHX+#$@YsC4c|l0tGigsn@jy) zXD($Ouk>H+V(Mr6NQT0S9BFM~V6nkj;1OBOz`zY;a|<&v%$g$sEJPk;hD4M^`1)8S z=jZArrsOB3>Q&?x097+E*i={nnYpPYi3%0DIeEoa6}C!X6;?ntNLXJ<0j#7X+g2&U zH$cHTzbI9~RL@Y)NXd>%K|#T$C?(A*$i)q+9mum)$|xx*u+rBrFE7_CH`dE9O4m2E zw6xSWFw!?N(gmu}Ew0QfNvzP#D^`XW0yD=YwK%ybv!En1KTiQ3|)OBHVcpi zp&D%TL4k-AsNfg_g$9~9p}$+4Ynr|VULLgiakg&)DD)EWO!OHC@snXr}UI${nVUP zpr1>Mf#G6^ng~;pt%^&NvQm>vU@-wn)!_JWN=(;B61LIDR86%A1?G9U(@`={MPdPF zbOKdd`R1o&rd7HmmZaJl85kPr8kp-EnTHsfS{ayIfdU*&4N@e5WSomq6HD@oLh|!- z?7;Dr3*ssm=^5w&a}>G?yzvAH17L|`#|6|0E4}QvA~xC{V_*wu2^AHZU}H9f($4F$btFf{}TLQXUhF5fht1@YV$^ z9BUdFV+73^nIsvRXRM40U}6b7z_6}kHbY}i1LK(xT@6Mi?F5GKBfbp|ZU-3BR*6kv zXcRSQ(0-)mprD+wTr)o_4I;(%zOu)+jEgNB)_SXCVoSa}|F?cfwR!69+L=W3IX z!UiU`0@ph%94Rb33Cpq^IY*r_8XBW%V>G9XmK&p`=xCiXTEmXEH%41uqixaAmicH0 zVYIt6!aI*K%s=kP-v##6IXGZ2Cama>{@)81;C?K-P&M2k<0!GL}5+H~XTq*@SQi|Ft z2*0X`$`8S!qO#)xBeJRkf?;t189=ZB6Imw-h=`q;FP(2UpWZvmJ@=k-@45M(dtb7r zyVEiaLk$=Vw#>zu;st}j6Jf9=m1+nXCFe!$1PrEZ%5Ze_ba8YX_9-*rJujiLuQmJo&2v+Cxes}ec zU|qeux&7*yz#W=X_|wGQskL7*OHNjwFs@sEC+64Hb$Z(#H21Gh$Pe2WzOubdr6fzg z{l{!k%OD?N5Z7j33SoK?YdV6Scm>})U+MIQLNRgIvkZQEc^mP9XBPg%y|S$~Br|;N zk?-!-(Qqh_mQ|6WINQ{hHAjBRV#O#!FkAJ+oxy`L#f8V45*VvWMJFBB5m zG6vOLtDvgoDjHlSq-*h5xM56O>Jjau2f2IxKItIb@coX4XTyf$^{LZG&lI|D95wN1 z!fo0)q>WV7-V;q|A?HR!*bgozJw%j98-~gwBKVV0;=hZIF>7oJSr2YjOWO*rSxz#& z;KXnDrJVZp;Yduiy1-H%s$ZFz6Q=x@$V_B@Tqwl?>6e;EHt|MiK<(#hXQMuj@Jseeh&eN{FxsQ$iw>D1aX1HMMlUbh?Z zmhY4eHffn5&LUbL_}o8|$JYz&$WFiLWmEg0ZPX+;W>@CxQz-%{E5+P7dH9&ey_y$R z@Zzje>2B%z!i!7Brqi{t5Y)~5>vpqRs~2aXD8DVE8vKl=`k(`duI1-k@?!pJ^HA6S zS;3WpuhjQHyoC>X>Xf8gze%_8^#+^RTV>V9&YPAWMjd~%xpSg?ON?kK^X*Pb(o8jR zz;DmaOWMMr6=M~K?MFx4_xDkARTxLJ@W@ohAx z5RD0jGgk?QL@H`VubD2k4}?VtB8@g`%hHBA$2pJ(gK5g1HMNysXEF_BNu-p!&+Qa8_APgopHWnRgg=TZZF*sXWTMQPD z!Q(Au5|+F;7M~`tWbsU98~NA{h0Y7%GB|t&n}w9OOABU4^X*V5xuN;rY(M#ouuqm) zyt!e?28fY!FgP?8GvBsMl_aM^UUVKiGFsleFN?t^<46kO#pF-cX0;sIOb(aM z)^jQgX^Z6pKA9mC@N)_aiHj9HxD2|?A@Y9B_h}(*v3%ek8CXc1Qy^jFPF&zrMa1OZ zSVaF{&ZY|(|H0XE&X>-XQz1`=fF2n@VKC_|h3jlKVM&-jmyMavllcYr`6LVtfq2ou zd+8zkkCB+2)rxq0Lkq_&Ad@g(O8;pAm96>tu79?81T@Z<;gm^3ZtPG-SR94Mr<3tm z9NrR3u*4I5aMlo(09g@8m_;%Rf+XiSa_KZao9n}7N0JrsV#;5Ucr+F*TTzQ8{%f3O zeIUy?WDS|-$LvMc@Z7320)tr}bfIka5hx9H;8H|%our=C+Do0CSFRWue14o5#r8v2 zw=|&r4*eMX%lgCV(ka?*j%H^UuP4LmBC(ON`)&7>NF-|PDRU{-7o`CU0HNbd&c~))@yl9IKu_ zXA+A-!khpP_yx=f#qt2_0ptmgBf4gF!{Y)MW6R$cC1d7@$Yb?+_j zYwfE^5_e`vhT zX=u3r>4$fsxP&apbm@Rcbyuc2T=giqZiMo9@9=oua6#YH0hO-1ak9^rJTPMM qY4Yr5Cu^v99p{E9VdroUHKlRW;M8#BJ^AOQE?e9wSHJo8(7yq;BYKSh literal 0 HcmV?d00001 diff --git a/EasyAnimations/EasyAnimations/EAAnimations.h b/EasyAnimations/EasyAnimations/EAAnimations.h new file mode 100644 index 0000000..671f0bc --- /dev/null +++ b/EasyAnimations/EasyAnimations/EAAnimations.h @@ -0,0 +1,19 @@ +// +// EAAnimations.h +// EasyAnimations +// +// Created by Jeames Bone on 26/11/12. +// Copyright (c) 2012 Jeames Bone. All rights reserved. +// + +#import +#import + +@interface EAAnimations : NSObject + +// Pulse the specified view with a speed (pulses per second) and a number of repeats. +// Returns the key the animation was added to in the layer. ++ (NSString *)pulseView:(UIView *)view from:(float)from to:(float)to withDuration:(float)duration repeats:(int)repeats; ++ (NSString *)rotateView:(UIView *)view withDuration:(float)duration amount:(float)amount; + +@end diff --git a/EasyAnimations/EasyAnimations/EAAnimations.m b/EasyAnimations/EasyAnimations/EAAnimations.m new file mode 100644 index 0000000..ff96a83 --- /dev/null +++ b/EasyAnimations/EasyAnimations/EAAnimations.m @@ -0,0 +1,42 @@ +// +// EAAnimations.m +// EasyAnimations +// +// Created by Jeames Bone on 26/11/12. +// Copyright (c) 2012 Jeames Bone. All rights reserved. +// + +#import "EAAnimations.h" + +@implementation EAAnimations + ++ (NSString *)pulseView:(UIView *)view from:(float)from to:(float)to withDuration:(float)duration repeats:(int)repeats +{ + CABasicAnimation *pulse; + pulse = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; + pulse.fromValue = [NSNumber numberWithFloat:from]; + pulse.toValue = [NSNumber numberWithFloat:to]; + pulse.autoreverses = YES; + pulse.duration = duration; + pulse.repeatCount = repeats; + + [view.layer addAnimation:pulse forKey:@"pulse"]; + + return @"pulse"; +} + ++ (NSString *)rotateView:(UIView *)view withDuration:(float)duration amount:(float)amount +{ + CABasicAnimation *rotation; + rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; + rotation.fromValue = [NSNumber numberWithFloat:0]; + rotation.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)]; + rotation.duration = duration; + rotation.repeatCount = HUGE_VALF; + + [view.layer addAnimation:rotation forKey:@"rotation"]; + + return @"rotation"; +} + +@end diff --git a/EasyAnimations/EasyAnimations/EAAppDelegate.h b/EasyAnimations/EasyAnimations/EAAppDelegate.h new file mode 100644 index 0000000..02d8e5f --- /dev/null +++ b/EasyAnimations/EasyAnimations/EAAppDelegate.h @@ -0,0 +1,15 @@ +// +// EAAppDelegate.h +// EasyAnimations +// +// Created by Jeames Bone on 26/11/12. +// Copyright (c) 2012 Jeames Bone. All rights reserved. +// + +#import + +@interface EAAppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@end diff --git a/EasyAnimations/EasyAnimations/EAAppDelegate.m b/EasyAnimations/EasyAnimations/EAAppDelegate.m new file mode 100644 index 0000000..f38cfb4 --- /dev/null +++ b/EasyAnimations/EasyAnimations/EAAppDelegate.m @@ -0,0 +1,46 @@ +// +// EAAppDelegate.m +// EasyAnimations +// +// Created by Jeames Bone on 26/11/12. +// Copyright (c) 2012 Jeames Bone. All rights reserved. +// + +#import "EAAppDelegate.h" + +@implementation EAAppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + // Override point for customization after application launch. + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application +{ + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application +{ + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application +{ + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application +{ + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git a/EasyAnimations/EasyAnimations/EAViewController.h b/EasyAnimations/EasyAnimations/EAViewController.h new file mode 100644 index 0000000..9c45380 --- /dev/null +++ b/EasyAnimations/EasyAnimations/EAViewController.h @@ -0,0 +1,15 @@ +// +// EAViewController.h +// EasyAnimations +// +// Created by Jeames Bone on 26/11/12. +// Copyright (c) 2012 Jeames Bone. All rights reserved. +// + +#import + +@interface EAViewController : UIViewController + +@property (weak, nonatomic) IBOutlet UIView *testView; + +@end diff --git a/EasyAnimations/EasyAnimations/EAViewController.m b/EasyAnimations/EasyAnimations/EAViewController.m new file mode 100644 index 0000000..e14211a --- /dev/null +++ b/EasyAnimations/EasyAnimations/EAViewController.m @@ -0,0 +1,33 @@ +// +// EAViewController.m +// EasyAnimations +// +// Created by Jeames Bone on 26/11/12. +// Copyright (c) 2012 Jeames Bone. All rights reserved. +// + +#import "EAViewController.h" +#import "EAAnimations.h" + +@interface EAViewController () + +@end + +@implementation EAViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + [EAAnimations pulseView:_testView from:0.95 to:1.05 withDuration:1.0 repeats:HUGE_VALF]; + [EAAnimations rotateView:_testView withDuration:1.0 amount:3]; + +} + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git a/EasyAnimations/EasyAnimations/EasyAnimations-Info.plist b/EasyAnimations/EasyAnimations/EasyAnimations-Info.plist new file mode 100644 index 0000000..24de3c1 --- /dev/null +++ b/EasyAnimations/EasyAnimations/EasyAnimations-Info.plist @@ -0,0 +1,40 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + jeamesbone.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIMainStoryboardFile + MainStoryboard + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/EasyAnimations/EasyAnimations/EasyAnimations-Prefix.pch b/EasyAnimations/EasyAnimations/EasyAnimations-Prefix.pch new file mode 100644 index 0000000..ad22282 --- /dev/null +++ b/EasyAnimations/EasyAnimations/EasyAnimations-Prefix.pch @@ -0,0 +1,14 @@ +// +// Prefix header for all source files of the 'EasyAnimations' target in the 'EasyAnimations' project +// + +#import + +#ifndef __IPHONE_5_0 +#warning "This project uses features only available in iOS SDK 5.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/EasyAnimations/EasyAnimations/en.lproj/InfoPlist.strings b/EasyAnimations/EasyAnimations/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/EasyAnimations/EasyAnimations/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/EasyAnimations/EasyAnimations/en.lproj/MainStoryboard.storyboard b/EasyAnimations/EasyAnimations/en.lproj/MainStoryboard.storyboard new file mode 100644 index 0000000..f3a0352 --- /dev/null +++ b/EasyAnimations/EasyAnimations/en.lproj/MainStoryboard.storyboard @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/EasyAnimations/EasyAnimations/main.m b/EasyAnimations/EasyAnimations/main.m new file mode 100644 index 0000000..1225cce --- /dev/null +++ b/EasyAnimations/EasyAnimations/main.m @@ -0,0 +1,18 @@ +// +// main.m +// EasyAnimations +// +// Created by Jeames Bone on 26/11/12. +// Copyright (c) 2012 Jeames Bone. All rights reserved. +// + +#import + +#import "EAAppDelegate.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([EAAppDelegate class])); + } +}