├── .gitignore ├── Example ├── Example │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ ├── ExampleViewController.xib │ │ └── MainWindow.xib │ ├── shuttle.png │ ├── Example-Prefix.pch │ ├── ExampleViewController.h │ ├── main.m │ ├── ExampleAppDelegate.h │ ├── ExampleViewController.m │ ├── Example-Info.plist │ └── ExampleAppDelegate.m └── Example.xcodeproj │ ├── project.xcworkspace │ └── contents.xcworkspacedata │ └── project.pbxproj ├── ImageSpinner.h ├── README ├── MIT-LICENSE └── ImageSpinner.m /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.xcuserdatad 3 | 4 | -------------------------------------------------------------------------------- /Example/Example/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example/Example/shuttle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LemonCake/ImageSpinner/HEAD/Example/Example/shuttle.png -------------------------------------------------------------------------------- /Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ImageSpinner.h: -------------------------------------------------------------------------------- 1 | // 2 | // SyncActivityIndicator.h 3 | // Miso 4 | // 5 | // Created by Joshua Wu on 7/13/11. 6 | // Copyright 2011 GoMiso, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface ImageSpinner : UIImageView { 13 | BOOL _animate; 14 | double _rotationAngle; 15 | } 16 | - (void)startAnimating; 17 | - (void)stopAnimating; 18 | @end 19 | -------------------------------------------------------------------------------- /Example/Example/Example-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Example' target in the 'Example' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /Example/Example/ExampleViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleViewController.h 3 | // Example 4 | // 5 | // Created by Aaron Brethorst on 7/21/11. 6 | // Copyright 2011 Structlab LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ImageSpinner.h" 11 | 12 | @interface ExampleViewController : UIViewController 13 | @property(nonatomic,retain) IBOutlet ImageSpinner *spinner; 14 | @end 15 | -------------------------------------------------------------------------------- /Example/Example/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Example 4 | // 5 | // Created by Aaron Brethorst on 7/21/11. 6 | // Copyright 2011 Structlab LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | [pool release]; 16 | return retVal; 17 | } 18 | -------------------------------------------------------------------------------- /Example/Example/ExampleAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleAppDelegate.h 3 | // Example 4 | // 5 | // Created by Aaron Brethorst on 7/21/11. 6 | // Copyright 2011 Structlab LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class ExampleViewController; 12 | 13 | @interface ExampleAppDelegate : NSObject 14 | 15 | @property (nonatomic, retain) IBOutlet UIWindow *window; 16 | 17 | @property (nonatomic, retain) IBOutlet ExampleViewController *viewController; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Simple class that let's you assign an image and spin it 360deg endlessly 2 | 3 | eg. 4 | 5 | // initialization 6 | ImageSpinner *spinner = [[ImageSpinner alloc] initWithImage:[UIImage imageNamed:@"example.png"]]; 7 | 8 | // Animation methods 9 | [spinner startAnimation]; 10 | [spinner stopAnimation]; 11 | 12 | // Set another image 13 | [spinner setImage:[UIImage imageNamed:@"example2.png"]; 14 | 15 | Note: The image will continue spinning to it's original position even when you call stop animation. 16 | 17 | Space shuttle image from The Noun Project (http://thenounproject.com/). Licensed under Creative Commons Attribution. -------------------------------------------------------------------------------- /Example/Example/ExampleViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleViewController.m 3 | // Example 4 | // 5 | // Created by Aaron Brethorst on 7/21/11. 6 | // Copyright 2011 Structlab LLC. All rights reserved. 7 | // 8 | 9 | #import "ExampleViewController.h" 10 | 11 | @implementation ExampleViewController 12 | @synthesize spinner; 13 | 14 | - (void)didReceiveMemoryWarning 15 | { 16 | // Releases the view if it doesn't have a superview. 17 | [super didReceiveMemoryWarning]; 18 | 19 | // Release any cached data, images, etc that aren't in use. 20 | } 21 | 22 | #pragma mark - View lifecycle 23 | 24 | - (void)viewDidLoad { 25 | [super viewDidLoad]; 26 | [self.spinner startAnimating]; 27 | } 28 | 29 | - (void)viewDidUnload 30 | { 31 | [super viewDidUnload]; 32 | self.spinner = nil; 33 | } 34 | 35 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 36 | { 37 | // Return YES for supported orientations 38 | return (interfaceOrientation == UIInterfaceOrientationPortrait); 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /MIT-LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2012 Joshua Wu 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 5 | 6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 7 | 8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 9 | -------------------------------------------------------------------------------- /Example/Example/Example-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | com.structlab.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleShortVersionString 22 | 1.0 23 | CFBundleSignature 24 | ???? 25 | CFBundleVersion 26 | 1.0 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /ImageSpinner.m: -------------------------------------------------------------------------------- 1 | // 2 | // SyncActivityIndicator.m 3 | // Miso 4 | // 5 | // Created by Joshua Wu on 7/13/11. 6 | // Copyright 2011 GoMiso, Inc. All rights reserved. 7 | // 8 | 9 | #import "ImageSpinner.h" 10 | 11 | @interface ImageSpinner () 12 | - (void)configure; 13 | - (void)repeatAnimation; 14 | @end 15 | 16 | @implementation ImageSpinner 17 | 18 | - (id)initWithImage:(UIImage *)image { 19 | if ((self = [super initWithImage:image])) { 20 | [self configure]; 21 | } 22 | 23 | return self; 24 | } 25 | 26 | - (id)initWithCoder:(NSCoder *)aDecoder { 27 | if ((self = [super initWithCoder:aDecoder])) { 28 | [self configure]; 29 | } 30 | return self; 31 | } 32 | 33 | - (void)configure { 34 | _rotationAngle = 0; 35 | self.userInteractionEnabled = NO; 36 | } 37 | 38 | - (void)startAnimating { 39 | if(_animate || _rotationAngle != 0) { 40 | return; 41 | } 42 | 43 | _animate = YES; 44 | [self repeatAnimation]; 45 | } 46 | 47 | - (void)repeatAnimation { 48 | _rotationAngle += M_PI / 2.f; 49 | 50 | if(_rotationAngle == 2.f * M_PI) { 51 | _rotationAngle = 0.f; 52 | } 53 | 54 | if (_animate || _rotationAngle != M_PI / 2.f) { 55 | [UIView beginAnimations:nil context:nil]; 56 | [UIView setAnimationDuration:0.25]; 57 | [UIView setAnimationDelegate:self]; 58 | [UIView setAnimationCurve:UIViewAnimationCurveLinear]; 59 | [UIView setAnimationDidStopSelector:@selector(repeatAnimation)]; 60 | self.transform = CGAffineTransformMakeRotation(_rotationAngle); 61 | [UIView commitAnimations]; 62 | } else { 63 | _rotationAngle = 0.f; 64 | } 65 | } 66 | 67 | - (BOOL)isAnimating { 68 | return _animate; 69 | } 70 | 71 | - (void)stopAnimating { 72 | _animate = NO; 73 | } 74 | 75 | @end -------------------------------------------------------------------------------- /Example/Example/ExampleAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleAppDelegate.m 3 | // Example 4 | // 5 | // Created by Aaron Brethorst on 7/21/11. 6 | // Copyright 2011 Structlab LLC. All rights reserved. 7 | // 8 | 9 | #import "ExampleAppDelegate.h" 10 | 11 | #import "ExampleViewController.h" 12 | 13 | @implementation ExampleAppDelegate 14 | 15 | @synthesize window = _window; 16 | @synthesize viewController = _viewController; 17 | 18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 19 | { 20 | // Override point for customization after application launch. 21 | 22 | self.window.rootViewController = self.viewController; 23 | [self.window makeKeyAndVisible]; 24 | return YES; 25 | } 26 | 27 | - (void)applicationWillResignActive:(UIApplication *)application 28 | { 29 | /* 30 | 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. 31 | 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. 32 | */ 33 | } 34 | 35 | - (void)applicationDidEnterBackground:(UIApplication *)application 36 | { 37 | /* 38 | 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. 39 | If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 40 | */ 41 | } 42 | 43 | - (void)applicationWillEnterForeground:(UIApplication *)application 44 | { 45 | /* 46 | 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. 47 | */ 48 | } 49 | 50 | - (void)applicationDidBecomeActive:(UIApplication *)application 51 | { 52 | /* 53 | 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. 54 | */ 55 | } 56 | 57 | - (void)applicationWillTerminate:(UIApplication *)application 58 | { 59 | /* 60 | Called when the application is about to terminate. 61 | Save data if appropriate. 62 | See also applicationDidEnterBackground:. 63 | */ 64 | } 65 | 66 | - (void)dealloc 67 | { 68 | [_window release]; 69 | [_viewController release]; 70 | [super dealloc]; 71 | } 72 | 73 | @end 74 | -------------------------------------------------------------------------------- /Example/Example/en.lproj/ExampleViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1056 5 | 11A511 6 | 1617 7 | 1138 8 | 566.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 534 12 | 13 | 14 | YES 15 | IBProxyObject 16 | IBUIView 17 | IBUIImageView 18 | 19 | 20 | YES 21 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 22 | 23 | 24 | YES 25 | 26 | YES 27 | 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | 42 | 274 43 | 44 | YES 45 | 46 | 47 | 274 48 | {{110, 180}, {100, 100}} 49 | 50 | 51 | 52 | _NS:541 53 | NO 54 | IBCocoaTouchFramework 55 | 56 | NSImage 57 | shuttle.png 58 | 59 | 60 | 61 | {{0, 20}, {320, 460}} 62 | 63 | 64 | 65 | 66 | 3 67 | MC43NQA 68 | 69 | 2 70 | 71 | 72 | NO 73 | 74 | IBCocoaTouchFramework 75 | 76 | 77 | 78 | 79 | YES 80 | 81 | 82 | view 83 | 84 | 85 | 86 | 7 87 | 88 | 89 | 90 | spinner 91 | 92 | 93 | 94 | 10 95 | 96 | 97 | 98 | 99 | YES 100 | 101 | 0 102 | 103 | 104 | 105 | 106 | 107 | -1 108 | 109 | 110 | File's Owner 111 | 112 | 113 | -2 114 | 115 | 116 | 117 | 118 | 6 119 | 120 | 121 | YES 122 | 123 | 124 | 125 | 126 | 127 | 9 128 | 129 | 130 | 131 | 132 | 133 | 134 | YES 135 | 136 | YES 137 | -1.CustomClassName 138 | -1.IBPluginDependency 139 | -2.CustomClassName 140 | -2.IBPluginDependency 141 | 6.IBPluginDependency 142 | 9.CustomClassName 143 | 9.IBPluginDependency 144 | 145 | 146 | YES 147 | ExampleViewController 148 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 149 | UIResponder 150 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 151 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 152 | ImageSpinner 153 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 154 | 155 | 156 | 157 | YES 158 | 159 | 160 | 161 | 162 | 163 | YES 164 | 165 | 166 | 167 | 168 | 10 169 | 170 | 171 | 172 | YES 173 | 174 | ExampleViewController 175 | UIViewController 176 | 177 | spinner 178 | ImageSpinner 179 | 180 | 181 | spinner 182 | 183 | spinner 184 | ImageSpinner 185 | 186 | 187 | 188 | IBProjectSource 189 | ./Classes/ExampleViewController.h 190 | 191 | 192 | 193 | ImageSpinner 194 | UIImageView 195 | 196 | IBProjectSource 197 | ./Classes/ImageSpinner.h 198 | 199 | 200 | 201 | 202 | 0 203 | IBCocoaTouchFramework 204 | 205 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 206 | 207 | 208 | YES 209 | 3 210 | 211 | shuttle.png 212 | {100, 100} 213 | 214 | 534 215 | 216 | 217 | -------------------------------------------------------------------------------- /Example/Example.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 93AFA6B013D8AA88005EE725 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93AFA6AF13D8AA88005EE725 /* UIKit.framework */; }; 11 | 93AFA6B213D8AA88005EE725 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93AFA6B113D8AA88005EE725 /* Foundation.framework */; }; 12 | 93AFA6B413D8AA88005EE725 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93AFA6B313D8AA88005EE725 /* CoreGraphics.framework */; }; 13 | 93AFA6BA13D8AA88005EE725 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 93AFA6B813D8AA88005EE725 /* InfoPlist.strings */; }; 14 | 93AFA6BC13D8AA88005EE725 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 93AFA6BB13D8AA88005EE725 /* main.m */; }; 15 | 93AFA6C013D8AA88005EE725 /* ExampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 93AFA6BF13D8AA88005EE725 /* ExampleAppDelegate.m */; }; 16 | 93AFA6C313D8AA88005EE725 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 93AFA6C113D8AA88005EE725 /* MainWindow.xib */; }; 17 | 93AFA6C613D8AA88005EE725 /* ExampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93AFA6C513D8AA88005EE725 /* ExampleViewController.m */; }; 18 | 93AFA6C913D8AA88005EE725 /* ExampleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 93AFA6C713D8AA88005EE725 /* ExampleViewController.xib */; }; 19 | 93AFA6D013D8AB9C005EE725 /* shuttle.png in Resources */ = {isa = PBXBuildFile; fileRef = 93AFA6CF13D8AB9C005EE725 /* shuttle.png */; }; 20 | 93AFA6D313D8ABA6005EE725 /* ImageSpinner.m in Sources */ = {isa = PBXBuildFile; fileRef = 93AFA6D213D8ABA6005EE725 /* ImageSpinner.m */; }; 21 | /* End PBXBuildFile section */ 22 | 23 | /* Begin PBXFileReference section */ 24 | 93AFA6AB13D8AA88005EE725 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 25 | 93AFA6AF13D8AA88005EE725 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 26 | 93AFA6B113D8AA88005EE725 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 27 | 93AFA6B313D8AA88005EE725 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 28 | 93AFA6B713D8AA88005EE725 /* Example-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Example-Info.plist"; sourceTree = ""; }; 29 | 93AFA6B913D8AA88005EE725 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 30 | 93AFA6BB13D8AA88005EE725 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 31 | 93AFA6BD13D8AA88005EE725 /* Example-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Example-Prefix.pch"; sourceTree = ""; }; 32 | 93AFA6BE13D8AA88005EE725 /* ExampleAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ExampleAppDelegate.h; sourceTree = ""; }; 33 | 93AFA6BF13D8AA88005EE725 /* ExampleAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExampleAppDelegate.m; sourceTree = ""; }; 34 | 93AFA6C213D8AA88005EE725 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainWindow.xib; sourceTree = ""; }; 35 | 93AFA6C413D8AA88005EE725 /* ExampleViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ExampleViewController.h; sourceTree = ""; }; 36 | 93AFA6C513D8AA88005EE725 /* ExampleViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExampleViewController.m; sourceTree = ""; }; 37 | 93AFA6C813D8AA88005EE725 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ExampleViewController.xib; sourceTree = ""; }; 38 | 93AFA6CF13D8AB9C005EE725 /* shuttle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = shuttle.png; sourceTree = ""; }; 39 | 93AFA6D113D8ABA6005EE725 /* ImageSpinner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ImageSpinner.h; path = ../ImageSpinner.h; sourceTree = ""; }; 40 | 93AFA6D213D8ABA6005EE725 /* ImageSpinner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ImageSpinner.m; path = ../ImageSpinner.m; sourceTree = ""; }; 41 | /* End PBXFileReference section */ 42 | 43 | /* Begin PBXFrameworksBuildPhase section */ 44 | 93AFA6A813D8AA88005EE725 /* Frameworks */ = { 45 | isa = PBXFrameworksBuildPhase; 46 | buildActionMask = 2147483647; 47 | files = ( 48 | 93AFA6B013D8AA88005EE725 /* UIKit.framework in Frameworks */, 49 | 93AFA6B213D8AA88005EE725 /* Foundation.framework in Frameworks */, 50 | 93AFA6B413D8AA88005EE725 /* CoreGraphics.framework in Frameworks */, 51 | ); 52 | runOnlyForDeploymentPostprocessing = 0; 53 | }; 54 | /* End PBXFrameworksBuildPhase section */ 55 | 56 | /* Begin PBXGroup section */ 57 | 93AFA6A013D8AA88005EE725 = { 58 | isa = PBXGroup; 59 | children = ( 60 | 93AFA6D113D8ABA6005EE725 /* ImageSpinner.h */, 61 | 93AFA6D213D8ABA6005EE725 /* ImageSpinner.m */, 62 | 93AFA6B513D8AA88005EE725 /* Example */, 63 | 93AFA6AE13D8AA88005EE725 /* Frameworks */, 64 | 93AFA6AC13D8AA88005EE725 /* Products */, 65 | ); 66 | sourceTree = ""; 67 | }; 68 | 93AFA6AC13D8AA88005EE725 /* Products */ = { 69 | isa = PBXGroup; 70 | children = ( 71 | 93AFA6AB13D8AA88005EE725 /* Example.app */, 72 | ); 73 | name = Products; 74 | sourceTree = ""; 75 | }; 76 | 93AFA6AE13D8AA88005EE725 /* Frameworks */ = { 77 | isa = PBXGroup; 78 | children = ( 79 | 93AFA6AF13D8AA88005EE725 /* UIKit.framework */, 80 | 93AFA6B113D8AA88005EE725 /* Foundation.framework */, 81 | 93AFA6B313D8AA88005EE725 /* CoreGraphics.framework */, 82 | ); 83 | name = Frameworks; 84 | sourceTree = ""; 85 | }; 86 | 93AFA6B513D8AA88005EE725 /* Example */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | 93AFA6CF13D8AB9C005EE725 /* shuttle.png */, 90 | 93AFA6BE13D8AA88005EE725 /* ExampleAppDelegate.h */, 91 | 93AFA6BF13D8AA88005EE725 /* ExampleAppDelegate.m */, 92 | 93AFA6C113D8AA88005EE725 /* MainWindow.xib */, 93 | 93AFA6C413D8AA88005EE725 /* ExampleViewController.h */, 94 | 93AFA6C513D8AA88005EE725 /* ExampleViewController.m */, 95 | 93AFA6C713D8AA88005EE725 /* ExampleViewController.xib */, 96 | 93AFA6B613D8AA88005EE725 /* Supporting Files */, 97 | ); 98 | path = Example; 99 | sourceTree = ""; 100 | }; 101 | 93AFA6B613D8AA88005EE725 /* Supporting Files */ = { 102 | isa = PBXGroup; 103 | children = ( 104 | 93AFA6B713D8AA88005EE725 /* Example-Info.plist */, 105 | 93AFA6B813D8AA88005EE725 /* InfoPlist.strings */, 106 | 93AFA6BB13D8AA88005EE725 /* main.m */, 107 | 93AFA6BD13D8AA88005EE725 /* Example-Prefix.pch */, 108 | ); 109 | name = "Supporting Files"; 110 | sourceTree = ""; 111 | }; 112 | /* End PBXGroup section */ 113 | 114 | /* Begin PBXNativeTarget section */ 115 | 93AFA6AA13D8AA88005EE725 /* Example */ = { 116 | isa = PBXNativeTarget; 117 | buildConfigurationList = 93AFA6CC13D8AA88005EE725 /* Build configuration list for PBXNativeTarget "Example" */; 118 | buildPhases = ( 119 | 93AFA6A713D8AA88005EE725 /* Sources */, 120 | 93AFA6A813D8AA88005EE725 /* Frameworks */, 121 | 93AFA6A913D8AA88005EE725 /* Resources */, 122 | ); 123 | buildRules = ( 124 | ); 125 | dependencies = ( 126 | ); 127 | name = Example; 128 | productName = Example; 129 | productReference = 93AFA6AB13D8AA88005EE725 /* Example.app */; 130 | productType = "com.apple.product-type.application"; 131 | }; 132 | /* End PBXNativeTarget section */ 133 | 134 | /* Begin PBXProject section */ 135 | 93AFA6A213D8AA88005EE725 /* Project object */ = { 136 | isa = PBXProject; 137 | attributes = { 138 | ORGANIZATIONNAME = "Structlab LLC"; 139 | }; 140 | buildConfigurationList = 93AFA6A513D8AA88005EE725 /* Build configuration list for PBXProject "Example" */; 141 | compatibilityVersion = "Xcode 3.2"; 142 | developmentRegion = English; 143 | hasScannedForEncodings = 0; 144 | knownRegions = ( 145 | en, 146 | ); 147 | mainGroup = 93AFA6A013D8AA88005EE725; 148 | productRefGroup = 93AFA6AC13D8AA88005EE725 /* Products */; 149 | projectDirPath = ""; 150 | projectRoot = ""; 151 | targets = ( 152 | 93AFA6AA13D8AA88005EE725 /* Example */, 153 | ); 154 | }; 155 | /* End PBXProject section */ 156 | 157 | /* Begin PBXResourcesBuildPhase section */ 158 | 93AFA6A913D8AA88005EE725 /* Resources */ = { 159 | isa = PBXResourcesBuildPhase; 160 | buildActionMask = 2147483647; 161 | files = ( 162 | 93AFA6BA13D8AA88005EE725 /* InfoPlist.strings in Resources */, 163 | 93AFA6C313D8AA88005EE725 /* MainWindow.xib in Resources */, 164 | 93AFA6C913D8AA88005EE725 /* ExampleViewController.xib in Resources */, 165 | 93AFA6D013D8AB9C005EE725 /* shuttle.png in Resources */, 166 | ); 167 | runOnlyForDeploymentPostprocessing = 0; 168 | }; 169 | /* End PBXResourcesBuildPhase section */ 170 | 171 | /* Begin PBXSourcesBuildPhase section */ 172 | 93AFA6A713D8AA88005EE725 /* Sources */ = { 173 | isa = PBXSourcesBuildPhase; 174 | buildActionMask = 2147483647; 175 | files = ( 176 | 93AFA6BC13D8AA88005EE725 /* main.m in Sources */, 177 | 93AFA6C013D8AA88005EE725 /* ExampleAppDelegate.m in Sources */, 178 | 93AFA6C613D8AA88005EE725 /* ExampleViewController.m in Sources */, 179 | 93AFA6D313D8ABA6005EE725 /* ImageSpinner.m in Sources */, 180 | ); 181 | runOnlyForDeploymentPostprocessing = 0; 182 | }; 183 | /* End PBXSourcesBuildPhase section */ 184 | 185 | /* Begin PBXVariantGroup section */ 186 | 93AFA6B813D8AA88005EE725 /* InfoPlist.strings */ = { 187 | isa = PBXVariantGroup; 188 | children = ( 189 | 93AFA6B913D8AA88005EE725 /* en */, 190 | ); 191 | name = InfoPlist.strings; 192 | sourceTree = ""; 193 | }; 194 | 93AFA6C113D8AA88005EE725 /* MainWindow.xib */ = { 195 | isa = PBXVariantGroup; 196 | children = ( 197 | 93AFA6C213D8AA88005EE725 /* en */, 198 | ); 199 | name = MainWindow.xib; 200 | sourceTree = ""; 201 | }; 202 | 93AFA6C713D8AA88005EE725 /* ExampleViewController.xib */ = { 203 | isa = PBXVariantGroup; 204 | children = ( 205 | 93AFA6C813D8AA88005EE725 /* en */, 206 | ); 207 | name = ExampleViewController.xib; 208 | sourceTree = ""; 209 | }; 210 | /* End PBXVariantGroup section */ 211 | 212 | /* Begin XCBuildConfiguration section */ 213 | 93AFA6CA13D8AA88005EE725 /* Debug */ = { 214 | isa = XCBuildConfiguration; 215 | buildSettings = { 216 | ALWAYS_SEARCH_USER_PATHS = NO; 217 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 218 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 219 | COPY_PHASE_STRIP = NO; 220 | GCC_C_LANGUAGE_STANDARD = gnu99; 221 | GCC_DYNAMIC_NO_PIC = NO; 222 | GCC_OPTIMIZATION_LEVEL = 0; 223 | GCC_PREPROCESSOR_DEFINITIONS = ( 224 | "DEBUG=1", 225 | "$(inherited)", 226 | ); 227 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 228 | GCC_VERSION = com.apple.compilers.llvmgcc42; 229 | GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; 230 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 231 | GCC_WARN_UNUSED_VARIABLE = YES; 232 | IPHONEOS_DEPLOYMENT_TARGET = 4.3; 233 | SDKROOT = iphoneos; 234 | }; 235 | name = Debug; 236 | }; 237 | 93AFA6CB13D8AA88005EE725 /* Release */ = { 238 | isa = XCBuildConfiguration; 239 | buildSettings = { 240 | ALWAYS_SEARCH_USER_PATHS = NO; 241 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 242 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 243 | COPY_PHASE_STRIP = YES; 244 | GCC_C_LANGUAGE_STANDARD = gnu99; 245 | GCC_VERSION = com.apple.compilers.llvmgcc42; 246 | GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; 247 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 248 | GCC_WARN_UNUSED_VARIABLE = YES; 249 | IPHONEOS_DEPLOYMENT_TARGET = 4.3; 250 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 251 | SDKROOT = iphoneos; 252 | VALIDATE_PRODUCT = YES; 253 | }; 254 | name = Release; 255 | }; 256 | 93AFA6CD13D8AA88005EE725 /* Debug */ = { 257 | isa = XCBuildConfiguration; 258 | buildSettings = { 259 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 260 | GCC_PREFIX_HEADER = "Example/Example-Prefix.pch"; 261 | INFOPLIST_FILE = "Example/Example-Info.plist"; 262 | PRODUCT_NAME = "$(TARGET_NAME)"; 263 | WRAPPER_EXTENSION = app; 264 | }; 265 | name = Debug; 266 | }; 267 | 93AFA6CE13D8AA88005EE725 /* Release */ = { 268 | isa = XCBuildConfiguration; 269 | buildSettings = { 270 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 271 | GCC_PREFIX_HEADER = "Example/Example-Prefix.pch"; 272 | INFOPLIST_FILE = "Example/Example-Info.plist"; 273 | PRODUCT_NAME = "$(TARGET_NAME)"; 274 | WRAPPER_EXTENSION = app; 275 | }; 276 | name = Release; 277 | }; 278 | /* End XCBuildConfiguration section */ 279 | 280 | /* Begin XCConfigurationList section */ 281 | 93AFA6A513D8AA88005EE725 /* Build configuration list for PBXProject "Example" */ = { 282 | isa = XCConfigurationList; 283 | buildConfigurations = ( 284 | 93AFA6CA13D8AA88005EE725 /* Debug */, 285 | 93AFA6CB13D8AA88005EE725 /* Release */, 286 | ); 287 | defaultConfigurationIsVisible = 0; 288 | defaultConfigurationName = Release; 289 | }; 290 | 93AFA6CC13D8AA88005EE725 /* Build configuration list for PBXNativeTarget "Example" */ = { 291 | isa = XCConfigurationList; 292 | buildConfigurations = ( 293 | 93AFA6CD13D8AA88005EE725 /* Debug */, 294 | 93AFA6CE13D8AA88005EE725 /* Release */, 295 | ); 296 | defaultConfigurationIsVisible = 0; 297 | }; 298 | /* End XCConfigurationList section */ 299 | }; 300 | rootObject = 93AFA6A213D8AA88005EE725 /* Project object */; 301 | } 302 | -------------------------------------------------------------------------------- /Example/Example/en.lproj/MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1024 5 | 10D571 6 | 786 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 112 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | IBCocoaTouchFramework 42 | 43 | 44 | ExampleViewController 45 | 46 | 47 | 1 48 | 49 | IBCocoaTouchFramework 50 | NO 51 | 52 | 53 | 54 | 292 55 | {320, 480} 56 | 57 | 1 58 | MSAxIDEAA 59 | 60 | NO 61 | NO 62 | 63 | IBCocoaTouchFramework 64 | YES 65 | 66 | 67 | 68 | 69 | YES 70 | 71 | 72 | delegate 73 | 74 | 75 | 76 | 4 77 | 78 | 79 | 80 | viewController 81 | 82 | 83 | 84 | 11 85 | 86 | 87 | 88 | window 89 | 90 | 91 | 92 | 14 93 | 94 | 95 | 96 | 97 | YES 98 | 99 | 0 100 | 101 | 102 | 103 | 104 | 105 | -1 106 | 107 | 108 | File's Owner 109 | 110 | 111 | 3 112 | 113 | 114 | Example App Delegate 115 | 116 | 117 | -2 118 | 119 | 120 | 121 | 122 | 10 123 | 124 | 125 | 126 | 127 | 12 128 | 129 | 130 | 131 | 132 | 133 | 134 | YES 135 | 136 | YES 137 | -1.CustomClassName 138 | -2.CustomClassName 139 | 10.CustomClassName 140 | 10.IBEditorWindowLastContentRect 141 | 10.IBPluginDependency 142 | 12.IBEditorWindowLastContentRect 143 | 12.IBPluginDependency 144 | 3.CustomClassName 145 | 3.IBPluginDependency 146 | 147 | 148 | YES 149 | UIApplication 150 | UIResponder 151 | ExampleViewController 152 | {{234, 376}, {320, 480}} 153 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 154 | {{525, 346}, {320, 480}} 155 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 156 | ExampleAppDelegate 157 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 158 | 159 | 160 | 161 | YES 162 | 163 | 164 | YES 165 | 166 | 167 | 168 | 169 | YES 170 | 171 | 172 | YES 173 | 174 | 175 | 176 | 15 177 | 178 | 179 | 180 | YES 181 | 182 | UIWindow 183 | UIView 184 | 185 | IBUserSource 186 | 187 | 188 | 189 | 190 | ExampleAppDelegate 191 | NSObject 192 | 193 | YES 194 | 195 | YES 196 | viewController 197 | window 198 | 199 | 200 | YES 201 | ExampleViewController 202 | UIWindow 203 | 204 | 205 | 206 | YES 207 | 208 | YES 209 | viewController 210 | window 211 | 212 | 213 | YES 214 | 215 | viewController 216 | ExampleViewController 217 | 218 | 219 | window 220 | UIWindow 221 | 222 | 223 | 224 | 225 | IBProjectSource 226 | ExampleAppDelegate.h 227 | 228 | 229 | 230 | ExampleAppDelegate 231 | NSObject 232 | 233 | IBUserSource 234 | 235 | 236 | 237 | 238 | ExampleViewController 239 | UIViewController 240 | 241 | IBProjectSource 242 | ExampleViewController.h 243 | 244 | 245 | 246 | 247 | YES 248 | 249 | NSObject 250 | 251 | IBFrameworkSource 252 | Foundation.framework/Headers/NSError.h 253 | 254 | 255 | 256 | NSObject 257 | 258 | IBFrameworkSource 259 | Foundation.framework/Headers/NSFileManager.h 260 | 261 | 262 | 263 | NSObject 264 | 265 | IBFrameworkSource 266 | Foundation.framework/Headers/NSKeyValueCoding.h 267 | 268 | 269 | 270 | NSObject 271 | 272 | IBFrameworkSource 273 | Foundation.framework/Headers/NSKeyValueObserving.h 274 | 275 | 276 | 277 | NSObject 278 | 279 | IBFrameworkSource 280 | Foundation.framework/Headers/NSKeyedArchiver.h 281 | 282 | 283 | 284 | NSObject 285 | 286 | IBFrameworkSource 287 | Foundation.framework/Headers/NSObject.h 288 | 289 | 290 | 291 | NSObject 292 | 293 | IBFrameworkSource 294 | Foundation.framework/Headers/NSRunLoop.h 295 | 296 | 297 | 298 | NSObject 299 | 300 | IBFrameworkSource 301 | Foundation.framework/Headers/NSThread.h 302 | 303 | 304 | 305 | NSObject 306 | 307 | IBFrameworkSource 308 | Foundation.framework/Headers/NSURL.h 309 | 310 | 311 | 312 | NSObject 313 | 314 | IBFrameworkSource 315 | Foundation.framework/Headers/NSURLConnection.h 316 | 317 | 318 | 319 | NSObject 320 | 321 | IBFrameworkSource 322 | UIKit.framework/Headers/UIAccessibility.h 323 | 324 | 325 | 326 | NSObject 327 | 328 | IBFrameworkSource 329 | UIKit.framework/Headers/UINibLoading.h 330 | 331 | 332 | 333 | NSObject 334 | 335 | IBFrameworkSource 336 | UIKit.framework/Headers/UIResponder.h 337 | 338 | 339 | 340 | UIApplication 341 | UIResponder 342 | 343 | IBFrameworkSource 344 | UIKit.framework/Headers/UIApplication.h 345 | 346 | 347 | 348 | UIResponder 349 | NSObject 350 | 351 | 352 | 353 | UISearchBar 354 | UIView 355 | 356 | IBFrameworkSource 357 | UIKit.framework/Headers/UISearchBar.h 358 | 359 | 360 | 361 | UISearchDisplayController 362 | NSObject 363 | 364 | IBFrameworkSource 365 | UIKit.framework/Headers/UISearchDisplayController.h 366 | 367 | 368 | 369 | UIView 370 | 371 | IBFrameworkSource 372 | UIKit.framework/Headers/UITextField.h 373 | 374 | 375 | 376 | UIView 377 | UIResponder 378 | 379 | IBFrameworkSource 380 | UIKit.framework/Headers/UIView.h 381 | 382 | 383 | 384 | UIViewController 385 | 386 | IBFrameworkSource 387 | UIKit.framework/Headers/UINavigationController.h 388 | 389 | 390 | 391 | UIViewController 392 | 393 | IBFrameworkSource 394 | UIKit.framework/Headers/UIPopoverController.h 395 | 396 | 397 | 398 | UIViewController 399 | 400 | IBFrameworkSource 401 | UIKit.framework/Headers/UISplitViewController.h 402 | 403 | 404 | 405 | UIViewController 406 | 407 | IBFrameworkSource 408 | UIKit.framework/Headers/UITabBarController.h 409 | 410 | 411 | 412 | UIViewController 413 | UIResponder 414 | 415 | IBFrameworkSource 416 | UIKit.framework/Headers/UIViewController.h 417 | 418 | 419 | 420 | UIWindow 421 | UIView 422 | 423 | IBFrameworkSource 424 | UIKit.framework/Headers/UIWindow.h 425 | 426 | 427 | 428 | 429 | 0 430 | IBCocoaTouchFramework 431 | 432 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 433 | 434 | 435 | 436 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 437 | 438 | 439 | YES 440 | Example.xcodeproj 441 | 3 442 | 112 443 | 444 | 445 | --------------------------------------------------------------------------------