標籤:uialertview uiactivityindicatorv 風火輪 載入等待 小菊花
參考:http://stackoverflow.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