等待框:
UIAlertView *showWaitingAlert(){ UIAlertView *waittingAlert = [[UIAlertView alloc] initWithTitle: @"正在获取数据" message: @"请稍候..." delegate: nil cancelButtonTitle: nil otherButtonTitles: nil]; UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; activityView.frame = CGRectMake(139.0f-18.0f, 80.0f, 37.0f, 37.0f); [waittingAlert addSubview:activityView]; [activityView startAnimating]; [waittingAlert show]; return waittingAlert; } void dismissWaitingAlert (UIAlertView* waittingAlert){ if (waittingAlert != nil) { [waittingAlert dismissWithClickedButtonIndex:0 animated:YES]; [waittingAlert release]; waittingAlert =nil; } }
首先,显示一个无按钮的alertView,然后添加一个UIActivityIndicatorView作为alertView的子视图
最后,通过alertView的dismissWithClickedButtonIndex:animated:取消显示alertView。
代码和显示效果都非常优雅
调用方法:
-(IBAction)ButtonOnPress:(id)sender{
G_waitalert = showWaitingAlert();
//定时5秒自动关闭
[self performSelector:@selector(timerCallback) withObject:nil afterDelay:5];
}
其中callback函数为实例函数,不然selector没法用类函数(我不会,呵呵):
-(void)timerCallback{
dismissWaittingAlert(G_waitalert);
}
或者直接在callback里调用全局变量G_waitalert进行操作!