├── .gitignore ├── Example Project ├── GCOLaunchImageTransition.xcodeproj │ └── project.pbxproj └── GCOLaunchImageTransition │ ├── Default-568h@2x.png │ ├── Default.png │ ├── Default@2x.png │ ├── GCOAppDelegate.h │ ├── GCOAppDelegate.m │ ├── GCOLaunchImageTransition-Info.plist │ ├── GCOLaunchImageTransition-Prefix.pch │ ├── en.lproj │ ├── InfoPlist.strings │ ├── MainStoryboard_iPad.storyboard │ └── MainStoryboard_iPhone.storyboard │ ├── iOS Icon Set │ ├── app_icon_1024px.png │ ├── app_icon_114px.png │ ├── app_icon_144px.png │ ├── app_icon_29px.png │ ├── app_icon_320px.png │ ├── app_icon_48px.png │ ├── app_icon_50px.png │ ├── app_icon_512px.png │ ├── app_icon_57px.png │ ├── app_icon_58px.png │ ├── app_icon_640px.png │ ├── app_icon_64px.png │ ├── app_icon_72px.png │ └── app_icon_96px.png │ └── main.m ├── GCOLaunchImageTransition.podspec ├── GCOLaunchImageTransition ├── GCOLaunchImageTransition.h └── GCOLaunchImageTransition.m ├── LICENSE └── README.markdown /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | .DS_Store 3 | 4 | # Thumbnails 5 | ._* 6 | 7 | # Files that might appear on external disk 8 | .Spotlight-V100 9 | .Trashes 10 | 11 | # Xcode 12 | build/* 13 | *.pbxuser 14 | !default.pbxuser 15 | *.mode1v3 16 | !default.mode1v3 17 | *.mode2v3 18 | !default.mode2v3 19 | *.perspectivev3 20 | !default.perspectivev3 21 | *.xcworkspace 22 | !default.xcworkspace 23 | xcuserdata 24 | profile 25 | *.moved-aside 26 | -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 891AD48116BA065000981794 /* app_icon_1024px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD47316BA065000981794 /* app_icon_1024px.png */; }; 11 | 891AD48216BA065000981794 /* app_icon_114px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD47416BA065000981794 /* app_icon_114px.png */; }; 12 | 891AD48316BA065000981794 /* app_icon_144px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD47516BA065000981794 /* app_icon_144px.png */; }; 13 | 891AD48416BA065000981794 /* app_icon_29px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD47616BA065000981794 /* app_icon_29px.png */; }; 14 | 891AD48516BA065000981794 /* app_icon_320px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD47716BA065000981794 /* app_icon_320px.png */; }; 15 | 891AD48616BA065000981794 /* app_icon_48px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD47816BA065000981794 /* app_icon_48px.png */; }; 16 | 891AD48716BA065000981794 /* app_icon_50px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD47916BA065000981794 /* app_icon_50px.png */; }; 17 | 891AD48816BA065000981794 /* app_icon_512px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD47A16BA065000981794 /* app_icon_512px.png */; }; 18 | 891AD48916BA065000981794 /* app_icon_57px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD47B16BA065000981794 /* app_icon_57px.png */; }; 19 | 891AD48A16BA065000981794 /* app_icon_58px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD47C16BA065000981794 /* app_icon_58px.png */; }; 20 | 891AD48B16BA065000981794 /* app_icon_640px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD47D16BA065000981794 /* app_icon_640px.png */; }; 21 | 891AD48C16BA065000981794 /* app_icon_64px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD47E16BA065000981794 /* app_icon_64px.png */; }; 22 | 891AD48D16BA065000981794 /* app_icon_72px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD47F16BA065000981794 /* app_icon_72px.png */; }; 23 | 891AD48E16BA065000981794 /* app_icon_96px.png in Resources */ = {isa = PBXBuildFile; fileRef = 891AD48016BA065000981794 /* app_icon_96px.png */; }; 24 | 89BF348516B9611000A87582 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 89BF348416B9611000A87582 /* UIKit.framework */; }; 25 | 89BF348716B9611000A87582 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 89BF348616B9611000A87582 /* Foundation.framework */; }; 26 | 89BF348916B9611000A87582 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 89BF348816B9611000A87582 /* CoreGraphics.framework */; }; 27 | 89BF348F16B9611000A87582 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 89BF348D16B9611000A87582 /* InfoPlist.strings */; }; 28 | 89BF349116B9611000A87582 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 89BF349016B9611000A87582 /* main.m */; }; 29 | 89BF349516B9611000A87582 /* GCOAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 89BF349416B9611000A87582 /* GCOAppDelegate.m */; }; 30 | 89BF349716B9611000A87582 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 89BF349616B9611000A87582 /* Default.png */; }; 31 | 89BF349916B9611000A87582 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 89BF349816B9611000A87582 /* Default@2x.png */; }; 32 | 89BF349B16B9611000A87582 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 89BF349A16B9611000A87582 /* Default-568h@2x.png */; }; 33 | 89BF349E16B9611000A87582 /* MainStoryboard_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 89BF349C16B9611000A87582 /* MainStoryboard_iPhone.storyboard */; }; 34 | 89BF34A116B9611000A87582 /* MainStoryboard_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 89BF349F16B9611000A87582 /* MainStoryboard_iPad.storyboard */; }; 35 | 89BF34AC16B963D900A87582 /* GCOLaunchImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 89BF34AB16B963D900A87582 /* GCOLaunchImageTransition.m */; }; 36 | /* End PBXBuildFile section */ 37 | 38 | /* Begin PBXFileReference section */ 39 | 891AD47316BA065000981794 /* app_icon_1024px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_1024px.png; sourceTree = ""; }; 40 | 891AD47416BA065000981794 /* app_icon_114px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_114px.png; sourceTree = ""; }; 41 | 891AD47516BA065000981794 /* app_icon_144px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_144px.png; sourceTree = ""; }; 42 | 891AD47616BA065000981794 /* app_icon_29px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_29px.png; sourceTree = ""; }; 43 | 891AD47716BA065000981794 /* app_icon_320px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_320px.png; sourceTree = ""; }; 44 | 891AD47816BA065000981794 /* app_icon_48px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_48px.png; sourceTree = ""; }; 45 | 891AD47916BA065000981794 /* app_icon_50px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_50px.png; sourceTree = ""; }; 46 | 891AD47A16BA065000981794 /* app_icon_512px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_512px.png; sourceTree = ""; }; 47 | 891AD47B16BA065000981794 /* app_icon_57px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_57px.png; sourceTree = ""; }; 48 | 891AD47C16BA065000981794 /* app_icon_58px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_58px.png; sourceTree = ""; }; 49 | 891AD47D16BA065000981794 /* app_icon_640px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_640px.png; sourceTree = ""; }; 50 | 891AD47E16BA065000981794 /* app_icon_64px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_64px.png; sourceTree = ""; }; 51 | 891AD47F16BA065000981794 /* app_icon_72px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_72px.png; sourceTree = ""; }; 52 | 891AD48016BA065000981794 /* app_icon_96px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_icon_96px.png; sourceTree = ""; }; 53 | 89BF348116B9611000A87582 /* GCOLaunchImageTransition.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GCOLaunchImageTransition.app; sourceTree = BUILT_PRODUCTS_DIR; }; 54 | 89BF348416B9611000A87582 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 55 | 89BF348616B9611000A87582 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 56 | 89BF348816B9611000A87582 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 57 | 89BF348C16B9611000A87582 /* GCOLaunchImageTransition-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GCOLaunchImageTransition-Info.plist"; sourceTree = ""; }; 58 | 89BF348E16B9611000A87582 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 59 | 89BF349016B9611000A87582 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 60 | 89BF349216B9611000A87582 /* GCOLaunchImageTransition-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "GCOLaunchImageTransition-Prefix.pch"; sourceTree = ""; }; 61 | 89BF349316B9611000A87582 /* GCOAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCOAppDelegate.h; sourceTree = ""; }; 62 | 89BF349416B9611000A87582 /* GCOAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GCOAppDelegate.m; sourceTree = ""; }; 63 | 89BF349616B9611000A87582 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; 64 | 89BF349816B9611000A87582 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; 65 | 89BF349A16B9611000A87582 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; 66 | 89BF349D16B9611000A87582 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPhone.storyboard; sourceTree = ""; }; 67 | 89BF34A016B9611000A87582 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPad.storyboard; sourceTree = ""; }; 68 | 89BF34AA16B963D900A87582 /* GCOLaunchImageTransition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GCOLaunchImageTransition.h; path = ../../GCOLaunchImageTransition/GCOLaunchImageTransition.h; sourceTree = ""; }; 69 | 89BF34AB16B963D900A87582 /* GCOLaunchImageTransition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GCOLaunchImageTransition.m; path = ../../GCOLaunchImageTransition/GCOLaunchImageTransition.m; sourceTree = ""; }; 70 | /* End PBXFileReference section */ 71 | 72 | /* Begin PBXFrameworksBuildPhase section */ 73 | 89BF347E16B9611000A87582 /* Frameworks */ = { 74 | isa = PBXFrameworksBuildPhase; 75 | buildActionMask = 2147483647; 76 | files = ( 77 | 89BF348516B9611000A87582 /* UIKit.framework in Frameworks */, 78 | 89BF348716B9611000A87582 /* Foundation.framework in Frameworks */, 79 | 89BF348916B9611000A87582 /* CoreGraphics.framework in Frameworks */, 80 | ); 81 | runOnlyForDeploymentPostprocessing = 0; 82 | }; 83 | /* End PBXFrameworksBuildPhase section */ 84 | 85 | /* Begin PBXGroup section */ 86 | 891AD47216BA065000981794 /* iOS Icon Set */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | 891AD47316BA065000981794 /* app_icon_1024px.png */, 90 | 891AD47416BA065000981794 /* app_icon_114px.png */, 91 | 891AD47516BA065000981794 /* app_icon_144px.png */, 92 | 891AD47616BA065000981794 /* app_icon_29px.png */, 93 | 891AD47716BA065000981794 /* app_icon_320px.png */, 94 | 891AD47816BA065000981794 /* app_icon_48px.png */, 95 | 891AD47916BA065000981794 /* app_icon_50px.png */, 96 | 891AD47A16BA065000981794 /* app_icon_512px.png */, 97 | 891AD47B16BA065000981794 /* app_icon_57px.png */, 98 | 891AD47C16BA065000981794 /* app_icon_58px.png */, 99 | 891AD47D16BA065000981794 /* app_icon_640px.png */, 100 | 891AD47E16BA065000981794 /* app_icon_64px.png */, 101 | 891AD47F16BA065000981794 /* app_icon_72px.png */, 102 | 891AD48016BA065000981794 /* app_icon_96px.png */, 103 | ); 104 | path = "iOS Icon Set"; 105 | sourceTree = ""; 106 | }; 107 | 89BF347816B9611000A87582 = { 108 | isa = PBXGroup; 109 | children = ( 110 | 89BF348A16B9611000A87582 /* GCOLaunchImageTransition */, 111 | 89BF348316B9611000A87582 /* Frameworks */, 112 | 89BF348216B9611000A87582 /* Products */, 113 | ); 114 | sourceTree = ""; 115 | }; 116 | 89BF348216B9611000A87582 /* Products */ = { 117 | isa = PBXGroup; 118 | children = ( 119 | 89BF348116B9611000A87582 /* GCOLaunchImageTransition.app */, 120 | ); 121 | name = Products; 122 | sourceTree = ""; 123 | }; 124 | 89BF348316B9611000A87582 /* Frameworks */ = { 125 | isa = PBXGroup; 126 | children = ( 127 | 89BF348416B9611000A87582 /* UIKit.framework */, 128 | 89BF348616B9611000A87582 /* Foundation.framework */, 129 | 89BF348816B9611000A87582 /* CoreGraphics.framework */, 130 | ); 131 | name = Frameworks; 132 | sourceTree = ""; 133 | }; 134 | 89BF348A16B9611000A87582 /* GCOLaunchImageTransition */ = { 135 | isa = PBXGroup; 136 | children = ( 137 | 89BF349316B9611000A87582 /* GCOAppDelegate.h */, 138 | 89BF349416B9611000A87582 /* GCOAppDelegate.m */, 139 | 89BF349C16B9611000A87582 /* MainStoryboard_iPhone.storyboard */, 140 | 89BF349F16B9611000A87582 /* MainStoryboard_iPad.storyboard */, 141 | 89BF34AA16B963D900A87582 /* GCOLaunchImageTransition.h */, 142 | 89BF34AB16B963D900A87582 /* GCOLaunchImageTransition.m */, 143 | 89BF348B16B9611000A87582 /* Supporting Files */, 144 | ); 145 | path = GCOLaunchImageTransition; 146 | sourceTree = ""; 147 | }; 148 | 89BF348B16B9611000A87582 /* Supporting Files */ = { 149 | isa = PBXGroup; 150 | children = ( 151 | 89BF348C16B9611000A87582 /* GCOLaunchImageTransition-Info.plist */, 152 | 89BF348D16B9611000A87582 /* InfoPlist.strings */, 153 | 89BF349016B9611000A87582 /* main.m */, 154 | 89BF349216B9611000A87582 /* GCOLaunchImageTransition-Prefix.pch */, 155 | 89BF349616B9611000A87582 /* Default.png */, 156 | 89BF349816B9611000A87582 /* Default@2x.png */, 157 | 89BF349A16B9611000A87582 /* Default-568h@2x.png */, 158 | 891AD47216BA065000981794 /* iOS Icon Set */, 159 | ); 160 | name = "Supporting Files"; 161 | sourceTree = ""; 162 | }; 163 | /* End PBXGroup section */ 164 | 165 | /* Begin PBXNativeTarget section */ 166 | 89BF348016B9611000A87582 /* GCOLaunchImageTransition */ = { 167 | isa = PBXNativeTarget; 168 | buildConfigurationList = 89BF34A716B9611000A87582 /* Build configuration list for PBXNativeTarget "GCOLaunchImageTransition" */; 169 | buildPhases = ( 170 | 89BF347D16B9611000A87582 /* Sources */, 171 | 89BF347E16B9611000A87582 /* Frameworks */, 172 | 89BF347F16B9611000A87582 /* Resources */, 173 | ); 174 | buildRules = ( 175 | ); 176 | dependencies = ( 177 | ); 178 | name = GCOLaunchImageTransition; 179 | productName = GCOLaunchImageTransition; 180 | productReference = 89BF348116B9611000A87582 /* GCOLaunchImageTransition.app */; 181 | productType = "com.apple.product-type.application"; 182 | }; 183 | /* End PBXNativeTarget section */ 184 | 185 | /* Begin PBXProject section */ 186 | 89BF347916B9611000A87582 /* Project object */ = { 187 | isa = PBXProject; 188 | attributes = { 189 | CLASSPREFIX = GCO; 190 | LastUpgradeCheck = 0460; 191 | ORGANIZATIONNAME = "Gone Coding"; 192 | }; 193 | buildConfigurationList = 89BF347C16B9611000A87582 /* Build configuration list for PBXProject "GCOLaunchImageTransition" */; 194 | compatibilityVersion = "Xcode 3.2"; 195 | developmentRegion = English; 196 | hasScannedForEncodings = 0; 197 | knownRegions = ( 198 | en, 199 | ); 200 | mainGroup = 89BF347816B9611000A87582; 201 | productRefGroup = 89BF348216B9611000A87582 /* Products */; 202 | projectDirPath = ""; 203 | projectRoot = ""; 204 | targets = ( 205 | 89BF348016B9611000A87582 /* GCOLaunchImageTransition */, 206 | ); 207 | }; 208 | /* End PBXProject section */ 209 | 210 | /* Begin PBXResourcesBuildPhase section */ 211 | 89BF347F16B9611000A87582 /* Resources */ = { 212 | isa = PBXResourcesBuildPhase; 213 | buildActionMask = 2147483647; 214 | files = ( 215 | 89BF348F16B9611000A87582 /* InfoPlist.strings in Resources */, 216 | 89BF349716B9611000A87582 /* Default.png in Resources */, 217 | 89BF349916B9611000A87582 /* Default@2x.png in Resources */, 218 | 89BF349B16B9611000A87582 /* Default-568h@2x.png in Resources */, 219 | 89BF349E16B9611000A87582 /* MainStoryboard_iPhone.storyboard in Resources */, 220 | 89BF34A116B9611000A87582 /* MainStoryboard_iPad.storyboard in Resources */, 221 | 891AD48116BA065000981794 /* app_icon_1024px.png in Resources */, 222 | 891AD48216BA065000981794 /* app_icon_114px.png in Resources */, 223 | 891AD48316BA065000981794 /* app_icon_144px.png in Resources */, 224 | 891AD48416BA065000981794 /* app_icon_29px.png in Resources */, 225 | 891AD48516BA065000981794 /* app_icon_320px.png in Resources */, 226 | 891AD48616BA065000981794 /* app_icon_48px.png in Resources */, 227 | 891AD48716BA065000981794 /* app_icon_50px.png in Resources */, 228 | 891AD48816BA065000981794 /* app_icon_512px.png in Resources */, 229 | 891AD48916BA065000981794 /* app_icon_57px.png in Resources */, 230 | 891AD48A16BA065000981794 /* app_icon_58px.png in Resources */, 231 | 891AD48B16BA065000981794 /* app_icon_640px.png in Resources */, 232 | 891AD48C16BA065000981794 /* app_icon_64px.png in Resources */, 233 | 891AD48D16BA065000981794 /* app_icon_72px.png in Resources */, 234 | 891AD48E16BA065000981794 /* app_icon_96px.png in Resources */, 235 | ); 236 | runOnlyForDeploymentPostprocessing = 0; 237 | }; 238 | /* End PBXResourcesBuildPhase section */ 239 | 240 | /* Begin PBXSourcesBuildPhase section */ 241 | 89BF347D16B9611000A87582 /* Sources */ = { 242 | isa = PBXSourcesBuildPhase; 243 | buildActionMask = 2147483647; 244 | files = ( 245 | 89BF349116B9611000A87582 /* main.m in Sources */, 246 | 89BF349516B9611000A87582 /* GCOAppDelegate.m in Sources */, 247 | 89BF34AC16B963D900A87582 /* GCOLaunchImageTransition.m in Sources */, 248 | ); 249 | runOnlyForDeploymentPostprocessing = 0; 250 | }; 251 | /* End PBXSourcesBuildPhase section */ 252 | 253 | /* Begin PBXVariantGroup section */ 254 | 89BF348D16B9611000A87582 /* InfoPlist.strings */ = { 255 | isa = PBXVariantGroup; 256 | children = ( 257 | 89BF348E16B9611000A87582 /* en */, 258 | ); 259 | name = InfoPlist.strings; 260 | sourceTree = ""; 261 | }; 262 | 89BF349C16B9611000A87582 /* MainStoryboard_iPhone.storyboard */ = { 263 | isa = PBXVariantGroup; 264 | children = ( 265 | 89BF349D16B9611000A87582 /* en */, 266 | ); 267 | name = MainStoryboard_iPhone.storyboard; 268 | sourceTree = ""; 269 | }; 270 | 89BF349F16B9611000A87582 /* MainStoryboard_iPad.storyboard */ = { 271 | isa = PBXVariantGroup; 272 | children = ( 273 | 89BF34A016B9611000A87582 /* en */, 274 | ); 275 | name = MainStoryboard_iPad.storyboard; 276 | sourceTree = ""; 277 | }; 278 | /* End PBXVariantGroup section */ 279 | 280 | /* Begin XCBuildConfiguration section */ 281 | 89BF34A516B9611000A87582 /* Debug */ = { 282 | isa = XCBuildConfiguration; 283 | buildSettings = { 284 | ALWAYS_SEARCH_USER_PATHS = NO; 285 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 286 | CLANG_CXX_LIBRARY = "libc++"; 287 | CLANG_ENABLE_OBJC_ARC = YES; 288 | CLANG_WARN_CONSTANT_CONVERSION = YES; 289 | CLANG_WARN_EMPTY_BODY = YES; 290 | CLANG_WARN_ENUM_CONVERSION = YES; 291 | CLANG_WARN_INT_CONVERSION = YES; 292 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 293 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 294 | COPY_PHASE_STRIP = NO; 295 | GCC_C_LANGUAGE_STANDARD = gnu99; 296 | GCC_DYNAMIC_NO_PIC = NO; 297 | GCC_OPTIMIZATION_LEVEL = 0; 298 | GCC_PREPROCESSOR_DEFINITIONS = ( 299 | "DEBUG=1", 300 | "$(inherited)", 301 | ); 302 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 303 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 304 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 305 | GCC_WARN_UNUSED_VARIABLE = YES; 306 | IPHONEOS_DEPLOYMENT_TARGET = 5.0; 307 | ONLY_ACTIVE_ARCH = YES; 308 | SDKROOT = iphoneos; 309 | TARGETED_DEVICE_FAMILY = "1,2"; 310 | }; 311 | name = Debug; 312 | }; 313 | 89BF34A616B9611000A87582 /* Release */ = { 314 | isa = XCBuildConfiguration; 315 | buildSettings = { 316 | ALWAYS_SEARCH_USER_PATHS = NO; 317 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 318 | CLANG_CXX_LIBRARY = "libc++"; 319 | CLANG_ENABLE_OBJC_ARC = YES; 320 | CLANG_WARN_CONSTANT_CONVERSION = YES; 321 | CLANG_WARN_EMPTY_BODY = YES; 322 | CLANG_WARN_ENUM_CONVERSION = YES; 323 | CLANG_WARN_INT_CONVERSION = YES; 324 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 325 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 326 | COPY_PHASE_STRIP = YES; 327 | GCC_C_LANGUAGE_STANDARD = gnu99; 328 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 329 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 330 | GCC_WARN_UNUSED_VARIABLE = YES; 331 | IPHONEOS_DEPLOYMENT_TARGET = 5.0; 332 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 333 | SDKROOT = iphoneos; 334 | TARGETED_DEVICE_FAMILY = "1,2"; 335 | VALIDATE_PRODUCT = YES; 336 | }; 337 | name = Release; 338 | }; 339 | 89BF34A816B9611000A87582 /* Debug */ = { 340 | isa = XCBuildConfiguration; 341 | buildSettings = { 342 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 343 | GCC_PREFIX_HEADER = "GCOLaunchImageTransition/GCOLaunchImageTransition-Prefix.pch"; 344 | INFOPLIST_FILE = "GCOLaunchImageTransition/GCOLaunchImageTransition-Info.plist"; 345 | PRODUCT_NAME = "$(TARGET_NAME)"; 346 | WRAPPER_EXTENSION = app; 347 | }; 348 | name = Debug; 349 | }; 350 | 89BF34A916B9611000A87582 /* Release */ = { 351 | isa = XCBuildConfiguration; 352 | buildSettings = { 353 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 354 | GCC_PREFIX_HEADER = "GCOLaunchImageTransition/GCOLaunchImageTransition-Prefix.pch"; 355 | INFOPLIST_FILE = "GCOLaunchImageTransition/GCOLaunchImageTransition-Info.plist"; 356 | PRODUCT_NAME = "$(TARGET_NAME)"; 357 | WRAPPER_EXTENSION = app; 358 | }; 359 | name = Release; 360 | }; 361 | /* End XCBuildConfiguration section */ 362 | 363 | /* Begin XCConfigurationList section */ 364 | 89BF347C16B9611000A87582 /* Build configuration list for PBXProject "GCOLaunchImageTransition" */ = { 365 | isa = XCConfigurationList; 366 | buildConfigurations = ( 367 | 89BF34A516B9611000A87582 /* Debug */, 368 | 89BF34A616B9611000A87582 /* Release */, 369 | ); 370 | defaultConfigurationIsVisible = 0; 371 | defaultConfigurationName = Release; 372 | }; 373 | 89BF34A716B9611000A87582 /* Build configuration list for PBXNativeTarget "GCOLaunchImageTransition" */ = { 374 | isa = XCConfigurationList; 375 | buildConfigurations = ( 376 | 89BF34A816B9611000A87582 /* Debug */, 377 | 89BF34A916B9611000A87582 /* Release */, 378 | ); 379 | defaultConfigurationIsVisible = 0; 380 | defaultConfigurationName = Release; 381 | }; 382 | /* End XCConfigurationList section */ 383 | }; 384 | rootObject = 89BF347916B9611000A87582 /* Project object */; 385 | } 386 | -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/Default-568h@2x.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/Default.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/Default@2x.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/GCOAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // GCOAppDelegate.h 3 | // GCOLaunchImageTransition 4 | // 5 | // Copyright (c) 2013, Michael Sedlaczek, Gone Coding, http://gonecoding.com 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without 9 | // modification, are permitted provided that the following conditions are met: 10 | // * Redistributions of source code must retain the above copyright 11 | // notice, this list of conditions and the following disclaimer. 12 | // * Redistributions in binary form must reproduce the above copyright 13 | // notice, this list of conditions and the following disclaimer in the 14 | // documentation and/or other materials provided with the distribution. 15 | // * Neither the name of Michael Sedlaczek and/or Gone Coding nor the 16 | // names of its contributors may be used to endorse or promote products 17 | // derived from this software without specific prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY Michael Sedlaczek ''AS IS'' AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | // DISCLAIMED. IN NO EVENT SHALL Michael Sedlaczek BE LIABLE FOR ANY 23 | // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 | // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 26 | // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28 | // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | // 30 | 31 | #import 32 | 33 | @interface GCOAppDelegate : UIResponder 34 | 35 | @property (strong, nonatomic) UIWindow *window; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/GCOAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // GCOAppDelegate.m 3 | // GCOLaunchImageTransition 4 | // 5 | // Copyright (c) 2013, Michael Sedlaczek, Gone Coding, http://gonecoding.com 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without 9 | // modification, are permitted provided that the following conditions are met: 10 | // * Redistributions of source code must retain the above copyright 11 | // notice, this list of conditions and the following disclaimer. 12 | // * Redistributions in binary form must reproduce the above copyright 13 | // notice, this list of conditions and the following disclaimer in the 14 | // documentation and/or other materials provided with the distribution. 15 | // * Neither the name of Michael Sedlaczek and/or Gone Coding nor the 16 | // names of its contributors may be used to endorse or promote products 17 | // derived from this software without specific prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY Michael Sedlaczek ''AS IS'' AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | // DISCLAIMED. IN NO EVENT SHALL Michael Sedlaczek BE LIABLE FOR ANY 23 | // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 | // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 26 | // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28 | // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | // 30 | 31 | #import "GCOAppDelegate.h" 32 | 33 | #import "GCOLaunchImageTransition.h" 34 | 35 | @implementation GCOAppDelegate 36 | 37 | - (void)applicationDidBecomeActive:(UIApplication *)application 38 | { 39 | // Choose a demo by setting values from 1 to 3 40 | NSUInteger demo = 3; 41 | 42 | switch( demo ) 43 | { 44 | default: 45 | case 1: 46 | { 47 | // Create transition with a given style that begins immediately 48 | [GCOLaunchImageTransition transitionWithDuration:0.5 style:GCOLaunchImageTransitionAnimationStyleZoomIn]; 49 | 50 | break; 51 | } 52 | case 2: 53 | { 54 | // Create transition with an near-infinite delay that requires manual dismissal via notification 55 | [GCOLaunchImageTransition transitionWithInfiniteDelayAndDuration:0.5 style:GCOLaunchImageTransitionAnimationStyleFade]; 56 | 57 | // Dissmiss the launch image transition by posting a notification after a few seconds 58 | [self performSelector:@selector(finishLaunchImageTransitionNow) withObject:nil afterDelay:3.0]; 59 | 60 | break; 61 | } 62 | 63 | case 3: 64 | { 65 | // Create fully customizable transition including an optional activity indicator 66 | // The 'activityIndicatorPosition' is a percentage value ('CGPointMake( 0.5, 0.5 )' being the center) 67 | // See https://github.com/gonecoding/GCOLaunchImageTransition for more documentation 68 | 69 | [GCOLaunchImageTransition transitionWithDelay:5.0 duration:0.5 style:GCOLaunchImageTransitionAnimationStyleZoomOut activityIndicatorPosition:CGPointMake( 0.5, 0.9 ) activityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 70 | 71 | break; 72 | } 73 | } 74 | } 75 | 76 | - (void)finishLaunchImageTransitionNow 77 | { 78 | [[NSNotificationCenter defaultCenter] postNotificationName:GCOLaunchImageTransitionHideNotification object:self]; 79 | } 80 | 81 | @end 82 | -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/GCOLaunchImageTransition-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | Transition 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIcons 12 | 13 | CFBundlePrimaryIcon 14 | 15 | CFBundleIconFiles 16 | 17 | app_icon_114px.png 18 | app_icon_57px.png 19 | app_icon_72px.png 20 | app_icon_144px.png 21 | 22 | UIPrerenderedIcon 23 | 24 | 25 | 26 | CFBundleIdentifier 27 | com.gonecoding.${PRODUCT_NAME:rfc1034identifier} 28 | CFBundleInfoDictionaryVersion 29 | 6.0 30 | CFBundleName 31 | ${PRODUCT_NAME} 32 | CFBundlePackageType 33 | APPL 34 | CFBundleShortVersionString 35 | 0.9.1 36 | CFBundleSignature 37 | ???? 38 | CFBundleVersion 39 | 1 40 | LSRequiresIPhoneOS 41 | 42 | UIMainStoryboardFile 43 | MainStoryboard_iPhone 44 | UIMainStoryboardFile~ipad 45 | MainStoryboard_iPad 46 | UIPrerenderedIcon 47 | 48 | UIRequiredDeviceCapabilities 49 | 50 | armv7 51 | 52 | UIStatusBarHidden 53 | 54 | UIStatusBarTintParameters 55 | 56 | UINavigationBar 57 | 58 | Style 59 | UIBarStyleDefault 60 | Translucent 61 | 62 | 63 | 64 | UISupportedInterfaceOrientations 65 | 66 | UIInterfaceOrientationPortrait 67 | UIInterfaceOrientationPortraitUpsideDown 68 | UIInterfaceOrientationLandscapeRight 69 | UIInterfaceOrientationLandscapeLeft 70 | 71 | UISupportedInterfaceOrientations~ipad 72 | 73 | UIInterfaceOrientationPortrait 74 | UIInterfaceOrientationPortraitUpsideDown 75 | UIInterfaceOrientationLandscapeLeft 76 | UIInterfaceOrientationLandscapeRight 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/GCOLaunchImageTransition-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'GCOLaunchImageTransition' target in the 'GCOLaunchImageTransition' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/en.lproj/MainStoryboard_iPad.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 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/en.lproj/MainStoryboard_iPhone.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 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 | -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_1024px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_1024px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_114px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_114px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_144px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_144px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_29px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_29px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_320px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_320px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_48px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_50px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_50px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_512px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_512px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_57px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_57px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_58px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_58px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_640px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_640px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_64px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_64px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_72px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_72px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonecoding/GCOLaunchImageTransition/31101828902a151436d54cb5e5afc07ba99c4480/Example Project/GCOLaunchImageTransition/iOS Icon Set/app_icon_96px.png -------------------------------------------------------------------------------- /Example Project/GCOLaunchImageTransition/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // GCOLaunchImageTransition 4 | // 5 | // Created by Michael Sedlaczek on 30.01.13. 6 | // Copyright (c) 2013 Gone Coding. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "GCOAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([GCOAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /GCOLaunchImageTransition.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod spec lint GCOLaunchImageTransition.podspec' to ensure this is a 3 | # valid spec. 4 | # 5 | Pod::Spec.new do |s| 6 | s.name = "GCOLaunchImageTransition" 7 | s.version = "0.9.1" 8 | s.summary = "Animates the transition from the launch image to the app's initial view controller on iOS." 9 | s.description = "Includes customized animation delay and duration, triggering the transition via notification and display of an activity indicator." 10 | s.homepage = "https://github.com/gonecoding/GCOLaunchImageTransition" 11 | s.license = 'New BSD License' 12 | s.author = { "Michael Sedlaczek" => "michael@gonecoding.com" } 13 | s.source = { :git => "https://github.com/gonecoding/GCOLaunchImageTransition.git", :tag => "0.9.1" } 14 | s.platform = :ios, '5.0' 15 | s.ios.deployment_target = '5.0' 16 | s.source_files = 'GCOLaunchImageTransition/*.{h,m}' 17 | s.requires_arc = true 18 | end 19 | -------------------------------------------------------------------------------- /GCOLaunchImageTransition/GCOLaunchImageTransition.h: -------------------------------------------------------------------------------- 1 | // 2 | // GCOLaunchImageTransition.h 3 | // GCOLaunchImageTransition 4 | // 5 | // Copyright (c) 2013, Michael Sedlaczek, Gone Coding, http://gonecoding.com 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without 9 | // modification, are permitted provided that the following conditions are met: 10 | // * Redistributions of source code must retain the above copyright 11 | // notice, this list of conditions and the following disclaimer. 12 | // * Redistributions in binary form must reproduce the above copyright 13 | // notice, this list of conditions and the following disclaimer in the 14 | // documentation and/or other materials provided with the distribution. 15 | // * Neither the name of Michael Sedlaczek and/or Gone Coding nor the 16 | // names of its contributors may be used to endorse or promote products 17 | // derived from this software without specific prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY Michael Sedlaczek ''AS IS'' AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | // DISCLAIMED. IN NO EVENT SHALL Michael Sedlaczek BE LIABLE FOR ANY 23 | // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 | // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 26 | // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28 | // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | // 30 | 31 | #import 32 | 33 | #define GCOLaunchImageTransitionNearInfiniteDelay DBL_MAX 34 | 35 | extern NSString* const GCOLaunchImageTransitionHideNotification; 36 | 37 | typedef enum GCOLaunchImageTransitionAnimationStyle_ 38 | { 39 | GCOLaunchImageTransitionAnimationStyleFade, 40 | GCOLaunchImageTransitionAnimationStyleZoomOut, 41 | GCOLaunchImageTransitionAnimationStyleZoomIn 42 | } GCOLaunchImageTransitionAnimationStyle; 43 | 44 | @interface GCOLaunchImageTransition : NSObject 45 | 46 | // Create transition with a given style that begins immediately 47 | 48 | + (void)transitionWithDuration:(NSTimeInterval)duration style:(GCOLaunchImageTransitionAnimationStyle)style; 49 | 50 | // Create transition with an near-infinite delay that requires manual dismissal via notification like this: 51 | // [[NSNotificationCenter defaultCenter] postNotificationName:GCOLaunchImageTransitionHideNotification object:self];) 52 | 53 | + (void)transitionWithInfiniteDelayAndDuration:(NSTimeInterval)duration style:(GCOLaunchImageTransitionAnimationStyle)style; 54 | 55 | // Create fully customizable transition including an optional activity indicator 56 | // The 'activityIndicatorPosition' is a percentage value ('CGPointMake( 0.5, 0.5 )' being the center) 57 | // See https://github.com/gonecoding/GCOLaunchImageTransition for more documentation 58 | 59 | + (void)transitionWithDelay:(NSTimeInterval)delay duration:(NSTimeInterval)duration style:(GCOLaunchImageTransitionAnimationStyle)style activityIndicatorPosition:(CGPoint)activityIndicatorPosition activityIndicatorStyle:(UIActivityIndicatorViewStyle)activityIndicatorStyle; 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /GCOLaunchImageTransition/GCOLaunchImageTransition.m: -------------------------------------------------------------------------------- 1 | // 2 | // GCOLaunchImageTransition.m 3 | // GCOLaunchImageTransition 4 | // 5 | // Copyright (c) 2013, Michael Sedlaczek, Gone Coding, http://gonecoding.com 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without 9 | // modification, are permitted provided that the following conditions are met: 10 | // * Redistributions of source code must retain the above copyright 11 | // notice, this list of conditions and the following disclaimer. 12 | // * Redistributions in binary form must reproduce the above copyright 13 | // notice, this list of conditions and the following disclaimer in the 14 | // documentation and/or other materials provided with the distribution. 15 | // * Neither the name of Michael Sedlaczek and/or Gone Coding nor the 16 | // names of its contributors may be used to endorse or promote products 17 | // derived from this software without specific prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY Michael Sedlaczek ''AS IS'' AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | // DISCLAIMED. IN NO EVENT SHALL Michael Sedlaczek BE LIABLE FOR ANY 23 | // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 | // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 26 | // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28 | // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | // 30 | 31 | #import "GCOLaunchImageTransition.h" 32 | 33 | NSString* const GCOLaunchImageTransitionHideNotification = @"GCOLaunchImageTransitionHideNotification"; 34 | 35 | @interface GCOLaunchImageTransition () 36 | 37 | @property( nonatomic, assign ) NSTimeInterval delay; 38 | @property( nonatomic, assign ) NSTimeInterval duration; 39 | @property( nonatomic, assign ) GCOLaunchImageTransitionAnimationStyle style; 40 | 41 | @property( nonatomic, strong ) UIImageView* imageView; 42 | @property( nonatomic, strong ) UIActivityIndicatorView* activityIndicatorView; 43 | 44 | @end 45 | 46 | @implementation GCOLaunchImageTransition 47 | 48 | + (void)transitionWithDuration:(NSTimeInterval)duration style:(GCOLaunchImageTransitionAnimationStyle)style 49 | { 50 | [self transitionWithDelay:0.0 duration:duration style:style activityIndicatorPosition:CGPointZero activityIndicatorStyle:0]; 51 | } 52 | 53 | + (void)transitionWithInfiniteDelayAndDuration:(NSTimeInterval)duration style:(GCOLaunchImageTransitionAnimationStyle)style 54 | { 55 | [self transitionWithDelay:GCOLaunchImageTransitionNearInfiniteDelay duration:duration style:style activityIndicatorPosition:CGPointZero activityIndicatorStyle:0]; 56 | } 57 | 58 | + (void)transitionWithDelay:(NSTimeInterval)delay duration:(NSTimeInterval)duration style:(GCOLaunchImageTransitionAnimationStyle)style activityIndicatorPosition:(CGPoint)activityIndicatorPosition activityIndicatorStyle:(UIActivityIndicatorViewStyle)activityIndicatorStyle 59 | { 60 | static dispatch_once_t onceToken; 61 | 62 | dispatch_once( &onceToken, ^ 63 | { 64 | UIWindow* window = [UIApplication sharedApplication].keyWindow; 65 | GCOLaunchImageTransition* transitionView = [[self alloc] initWithAnimationDelay:delay animationDuration:duration style:style activityIndicatorPosition:activityIndicatorPosition activityIndicatorStyle:activityIndicatorStyle]; 66 | 67 | [window addSubview:transitionView.imageView]; 68 | }); 69 | } 70 | 71 | #pragma mark - Object life cycle 72 | 73 | - (id)initWithAnimationDelay:(NSTimeInterval)delay animationDuration:(NSTimeInterval)duration style:(GCOLaunchImageTransitionAnimationStyle)style activityIndicatorPosition:(CGPoint)activityIndicatorPosition activityIndicatorStyle:(UIActivityIndicatorViewStyle)activityIndicatorStyle 74 | { 75 | self = [super init]; 76 | 77 | if( self ) 78 | { 79 | self.delay = delay; 80 | self.duration = duration; 81 | self.style = style; 82 | 83 | // Assign launch image 84 | self.imageView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 85 | self.imageView.image = [self launchImageForOrientation:[UIApplication sharedApplication].statusBarOrientation]; 86 | 87 | // Register for receiving notifications 88 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleHideNotification:) name:GCOLaunchImageTransitionHideNotification object:nil]; 89 | 90 | // Add activity indicator view 91 | if( !CGPointEqualToPoint( activityIndicatorPosition, CGPointZero) ) 92 | { 93 | self.activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:activityIndicatorStyle]; 94 | 95 | CGSize size = self.imageView.bounds.size; 96 | self.activityIndicatorView.center = CGPointMake( size.width * activityIndicatorPosition.x, size.height * activityIndicatorPosition.y ); 97 | 98 | [self.imageView addSubview:self.activityIndicatorView]; 99 | 100 | [self.activityIndicatorView startAnimating]; 101 | } 102 | 103 | // Start transition animation with given delay 104 | [self performSelector:@selector(performViewAnimations) withObject:nil afterDelay:self.delay]; 105 | } 106 | 107 | return self; 108 | } 109 | 110 | - (void)dealloc 111 | { 112 | [[NSNotificationCenter defaultCenter] removeObserver:self]; 113 | } 114 | 115 | #pragma mark - View animations 116 | 117 | - (void)performViewAnimations 118 | { 119 | if( self.activityIndicatorView ) 120 | { 121 | [self.activityIndicatorView stopAnimating]; 122 | } 123 | 124 | [UIView animateWithDuration:self.duration delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^ 125 | { 126 | self.imageView.alpha = 0.0; 127 | 128 | if( self.style == GCOLaunchImageTransitionAnimationStyleZoomIn ) 129 | { 130 | self.imageView.transform = CGAffineTransformMakeScale( 2.0, 2.0 ); 131 | } 132 | else if( self.style == GCOLaunchImageTransitionAnimationStyleZoomOut ) 133 | { 134 | self.imageView.transform = CGAffineTransformMakeScale( 0.1, 0.1 ); 135 | } 136 | } completion: 137 | ^( BOOL finished ) 138 | { 139 | [self.imageView removeFromSuperview]; 140 | }]; 141 | } 142 | 143 | #pragma mark - Handle notifications 144 | 145 | - (void)handleHideNotification:(NSNotification*)notification 146 | { 147 | if( [notification.name isEqualToString:GCOLaunchImageTransitionHideNotification] ) 148 | { 149 | // Start transition animation immediately 150 | [self performViewAnimations]; 151 | 152 | // Cancel still running previous perform request 153 | [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(performViewAnimations) object:nil]; 154 | } 155 | } 156 | 157 | #pragma mark - Compute device specific launch image 158 | 159 | - (UIImage*)launchImageForOrientation:(UIInterfaceOrientation)orientation 160 | { 161 | UIImage* launchImage = nil; 162 | 163 | if( [UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone ) 164 | { 165 | // Use Retina 4 launch image 166 | if( [UIScreen mainScreen].bounds.size.height == 568.0 ) 167 | { 168 | launchImage = [UIImage imageNamed:@"Default-568h@2x.png"]; 169 | } 170 | // Use Retina 3.5 launch image 171 | else 172 | { 173 | launchImage = [UIImage imageNamed:@"Default.png"]; 174 | } 175 | } 176 | else if( [UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad ) 177 | { 178 | // Start with images for special orientations 179 | if( orientation == UIInterfaceOrientationPortraitUpsideDown ) 180 | { 181 | launchImage = [UIImage imageNamed:@"Default-PortraitUpsideDown.png"]; 182 | } 183 | else if( orientation == UIInterfaceOrientationLandscapeLeft ) 184 | { 185 | launchImage = [UIImage imageNamed:@"Default-LandscapeLeft.png"]; 186 | } 187 | else if( orientation == UIInterfaceOrientationLandscapeRight ) 188 | { 189 | launchImage = [UIImage imageNamed:@"Default-LandscapeRight.png"]; 190 | } 191 | 192 | // Use iPad default launch images if nothing found yet 193 | if( launchImage == nil ) 194 | { 195 | if( UIInterfaceOrientationIsPortrait( orientation ) ) 196 | { 197 | launchImage = [UIImage imageNamed:@"Default-Portrait.png"]; 198 | } 199 | else 200 | { 201 | launchImage = [UIImage imageNamed:@"Default-Landscape.png"]; 202 | } 203 | } 204 | 205 | // No launch image found so far, fall back to default 206 | if( launchImage == nil ) 207 | { 208 | launchImage = [UIImage imageNamed:@"Default.png"]; 209 | } 210 | } 211 | 212 | // As a last resort try to read the launch image from the app's Info.plist 213 | if( launchImage == nil ) 214 | { 215 | NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary]; 216 | NSString* launchImageName = [infoDict valueForKey:@"UILaunchImageFile"]; 217 | 218 | launchImage = [UIImage imageNamed:launchImageName]; 219 | } 220 | 221 | return launchImage; 222 | } 223 | 224 | @end 225 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | * Copyright (c) 2013, Michael Sedlaczek, Gone Coding, http://gonecoding.com 2 | * All rights reserved. 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions are met: 6 | * * Redistributions of source code must retain the above copyright 7 | * notice, this list of conditions and the following disclaimer. 8 | * * Redistributions in binary form must reproduce the above copyright 9 | * notice, this list of conditions and the following disclaimer in the 10 | * documentation and/or other materials provided with the distribution. 11 | * * Neither the name of Michael Sedlaczek and/or Gone Coding nor the 12 | * names of its contributors may be used to endorse or promote products 13 | * derived from this software without specific prior written permission. 14 | * 15 | * THIS SOFTWARE IS PROVIDED BY Michael Sedlaczek ''AS IS'' AND ANY 16 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | * DISCLAIMED. IN NO EVENT SHALL Michael Sedlaczek BE LIABLE FOR ANY 19 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /README.markdown: -------------------------------------------------------------------------------- 1 | ## GCOLaunchImageTransition 2 | 3 | Animates the transition from the launch image to the app's initial view controller on iOS. Includes customized animation delay and duration, triggering the transition via notification and display of an activity indicator. 4 | 5 | If you're using this pod or found it somehow useful, I'd be happy if you'd [let me know](mailto:michael@gonecoding.com). 6 | 7 | 8 | ## Features 9 | 10 | - Use one of three animations to create a nice transition from your launch image to your app: 11 | - Fade 12 | - Zoom In (with Fade) 13 | - Zoom Out (with Fade) 14 | - Choose a custom delay before the animation begins 15 | - Choose a custom duration for the animation effect 16 | - Easily add an activity indicator with custom position and style 17 | - Dismiss the transition manually by posting a notification 18 | 19 | 20 | ## Example project 21 | 22 | To see this pod in action before using it in your project you should download the repository and have a look at the example project that's included. 23 | 24 | [Download repository as ZIP archive](https://github.com/gonecoding/GCOLaunchImageTransition/archive/master.zip) 25 | 26 | 27 | ## Installation via CocoaPods 28 | 29 | Adding this pod to your project using [CocoaPods](http://cocoapods.org) is a one-liner in your Podfile: 30 | 31 | ``` ruby 32 | pod 'GCOLaunchImageTransition' 33 | ``` 34 | 35 | Now run `pod install` to have CocoaPods handle everything for you. 36 | Never heard of CocoaPods? Do yourself a favor and [check it out now](http://cocoapods.org). 37 | 38 | 39 | ## Usage 40 | 41 | The easiest way is to add the following code to your app delegate (e. g. AppDelegate.m): 42 | 43 | ```objective-c 44 | #import 45 | 46 | - (void)applicationDidBecomeActive:(UIApplication *)application 47 | { 48 | [...] 49 | 50 | // Add transition from the launch image to the root view controller's view 51 | [GCOLaunchImageTransition transitionWithDuration:0.5 style:GCOLaunchImageTransitionAnimationStyleZoomIn]; 52 | } 53 | ``` 54 | 55 | Don't worry, although this code is being added to `-applicationDidBecomeActive` the code for creating the transition is only executed once — Grand Central Dispatch sees to that with its `dispatch_once()` method. 56 | 57 | You can also create a transition with a (near-)infinite delay that can be dismissed at a specific point by posting a notification: 58 | 59 | ```objective-c 60 | #import 61 | 62 | - (void)applicationDidBecomeActive:(UIApplication *)application 63 | { 64 | [...] 65 | 66 | // Create transition with an near-infinite delay that requires manual dismissal via notification 67 | [GCOLaunchImageTransition transitionWithInfiniteDelayAndDuration:0.5 style:GCOLaunchImageTransitionAnimationStyleFade]; 68 | } 69 | 70 | // At some point within your app's startup code dismiss the transition by posting a notification 71 | 72 | - (void)someStartupProcedureDidFinish 73 | { 74 | [[NSNotificationCenter defaultCenter] postNotificationName:GCOLaunchImageTransitionHideNotification object:self]; 75 | } 76 | ``` 77 | 78 | Finally you can add an activity indicator to the launch image transition using the fully customizable transition creation: 79 | 80 | ```objective-c 81 | #import 82 | 83 | - (void)applicationDidBecomeActive:(UIApplication *)application 84 | { 85 | [...] 86 | 87 | // Create fully customizable transition including an optional activity indicator 88 | // The 'activityIndicatorPosition' is a percentage value ('CGPointMake( 0.5, 0.5 )' being the center) 89 | 90 | [GCOLaunchImageTransition transitionWithDelay:5.0 duration:0.5 style:GCOLaunchImageTransitionAnimationStyleZoomOut activityIndicatorPosition:CGPointMake( 0.5, 0.9 ) activityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 91 | } 92 | ``` 93 | 94 | Note: You can always use `GCOLaunchImageTransitionNearInfiniteDelay` for the delay parameter if you prefer to dismiss the transition manually. 95 | 96 | ## ARC Compatibility 97 | 98 | This pod is compatible with ARC enabled projects by default. CocoaPods will handle the ARC settings for you. 99 | 100 | 101 | ## Contributing 102 | 103 | I absolutely appreciate any suggestions or improvements you may have in mind for this pod. That being said the most welcomed form of contribution would be a pull request from [your own fork of this repository](https://help.github.com/articles/fork-a-repo) on GitHub. If you only have a minor problem or suggestion consider opening an [issue](https://github.com/gonecoding/GCOLaunchImageTransition/issues). 104 | 105 | 106 | ## Contact 107 | 108 | I'm [Michael Sedlaczek](mailto:michael@gonecoding.com), [Gone Coding](http://gonecoding.com). I'm also using Twitter: [@gonecoding](https://twitter.com/gonecoding) 109 | 110 | 111 | ## License 112 | 113 | GCOLaunchImageTransition is released under the [New BSD License](http://en.wikipedia.org/wiki/BSD_licenses#3-clause_license_.28.22Revised_BSD_License.22.2C_.22New_BSD_License.22.2C_or_.22Modified_BSD_License.22.29). For details see [LICENSE](https://github.com/gonecoding/GCOLaunchImageTransition/blob/master/LICENSE). 114 | This license requires attribution when redistributing the component as source code or in binary form. 115 | --------------------------------------------------------------------------------