参考:http://*.com/questions/18729220/uialertview-addsubview-in-ios7
1、SignInViewController.h
#import <UIKit/UIKit.h> @interface SignInViewController : UIViewController<UIAlertViewDelegate>{ UIAlertView *remoteAlertView; } @end
2、SignInViewController.m
#import "SignInViewController.h" @interface SignIniewController () @end @implementation SignInViewController -(void)dealloc{ if (remoteAlertView) { [remoteAlertView release]; } [super dealloc]; } // 方法内: // 远程webservice方法 RemoteLogic *remoteLogic = [[RemoteLogic alloc] init]; // 启动动画 [self remoteAnimation:@"正在获取服务器时间, 请稍候..."]; // 异步加载数据 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 获取webservice数据 delegate.serverTime = remoteLogic.getServerTime; dispatch_async(dispatch_get_main_queue(), ^{ // 关闭动画 [remoteAlertView dismissWithClickedButtonIndex:0 animated:YES]; // 获取webservice数据后操作 do something }); }); #pragma mark - Animation -(void)remoteAnimation:(NSString *)message{ if (remoteAlertView) { [remoteAlertView release]; } remoteAlertView = [[UIAlertView alloc] initWithTitle:@"提示" message:message delegate:self cancelButtonTitle:nil otherButtonTitles:nil, nil ]; UIActivityIndicatorView *aiView = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(125.0, 80.0, 30.0, 30.0)]; aiView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge; //check if os version is 7 or above. ios7.0及以上UIAlertView弃用了addSubview方法 if ([[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending) { [remoteAlertView setValue:aiView forKey:@"accessoryView"]; }else{ [remoteAlertView addSubview:aiView]; } [remoteAlertView show]; [aiView startAnimating]; [aiView release]; }
3、效果ios5.1,ios7.1.2
iOS UIAlertView中UIActivityindicatorView风火轮提示加载等待,布布扣,bubuko.com