代碼: app
#import <UIKit/UIKit.h> #define COOKBOOK_PURPLE_COLOR [UIColor colorWithRed:0.20392f green:0.19607f blue:0.61176f alpha:1.0f] #define BARBUTTON(TITLE, SELECTOR) [[[UIBarButtonItem alloc] initWithTitle:TITLE style:UIBarButtonItemStylePlain target:self action:SELECTOR] autorelease] @interface TestBedViewController : UIViewController <UIAlertViewDelegate> { UIAlertView *baseAlert; } @end @implementation TestBedViewController - (void) performDismiss { [baseAlert dismissWithClickedButtonIndex:0 animated:NO]; } - (void) action: (UIBarButtonItem *) item { baseAlert = [[[UIAlertView alloc] initWithTitle:@"Please Wait" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles: nil] autorelease]; [baseAlert show]; // Create and add the activity indicator UIActivityIndicatorView *aiv = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; aiv.center = CGPointMake(baseAlert.bounds.size.width / 2.0f, baseAlert.bounds.size.height - 40.0f); [aiv startAnimating]; [baseAlert addSubview:aiv]; [aiv release]; // Auto dismiss after 3 seconds [self performSelector:@selector(performDismiss) withObject:nil afterDelay:3.0f]; } - (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) orientation { return YES; } - (void) viewDidLoad { self.navigationController.navigationBar.tintColor = COOKBOOK_PURPLE_COLOR; self.navigationItem.rightBarButtonItem = BARBUTTON(@"Action", @selector(action:)); } @end @interface TestBedAppDelegate : NSObject <UIApplicationDelegate> @end @implementation TestBedAppDelegate - (void)applicationDidFinishLaunching:(UIApplication *)application { UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[TestBedViewController alloc] init]]; [window addSubview:nav.view]; [window makeKeyAndVisible]; } @end int main(int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, @"TestBedAppDelegate"); [pool release]; return retVal; }
效果以下: code