ios 如何使用活动指示器显示警报视图?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4906726/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How can I show alertview with activity indicator?
提问by Voloda2
I want to show alertview with message: "Loading data" and spinning activity indicator. How can I do this?
我想显示带有消息的警报视图:“正在加载数据”和旋转活动指示器。我怎样才能做到这一点?
采纳答案by Sat
you can add a label and activityindicator as subviews of your alert view. you have to do some thing like this
您可以添加标签和活动指示器作为警报视图的子视图。你必须做这样的事情
myAlertView = [[UIAlertView alloc] initWithTitle:@"Loading" message:@"\n\n"
delegate:self
cancelButtonTitle:@""
otherButtonTitles:@"OK", nil];
UIActivityIndicatorView *loading = [[UIActivityIndicatorView alloc]
initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
loading.frame=CGRectMake(150, 150, 16, 16);
[myAlertView addSubview:loading];
[myAlertView show];
..better to use a UIActionSheet in this situation...
..在这种情况下最好使用 UIActionSheet ......
回答by jowie
NOTE: This solution won't work on iOS 7 and above.
注意:此解决方案不适用于 iOS 7 及更高版本。
This is my take on it:
这是我的看法:
alertView = [[UIAlertView alloc] initWithTitle:@"Submitting Entry"
message:@"\n"
delegate:self
cancelButtonTitle:nil
otherButtonTitles:nil];
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
spinner.center = CGPointMake(139.5, 75.5); // .5 so it doesn't blur
[alertView addSubview:spinner];
[spinner startAnimating];
[alertView show];
and dismiss in code using:
并使用以下代码关闭:
[alertView dismissWithClickedButtonIndex:0 animated:YES];
回答by AndyDeveloper
This works on iOS 7
这适用于 iOS 7
addSubView doesn't work on UIAlertView in iOS 7 and above. Try this instead
addSubView 在 iOS 7 及更高版本的 UIAlertView 上不起作用。试试这个
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Loading data" message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles: nil];
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[indicator startAnimating];
[alertView setValue:indicator forKey:@"accessoryView"];
[alertView show];
and to dismiss it
并驳回它
[alertView dismissWithClickedButtonIndex:0 animated:YES];
回答by oscar castellon
you can add a label and activityindicator as subviews of your alert view. you have to do some thing like this...
您可以添加标签和活动指示器作为警报视图的子视图。你必须做这样的事情......
- (IBAction)showAlertWithActivity:(id)sender{
alerta = [[UIAlertView alloc] initWithTitle:@"Guardando datos..."
message:@"\n"
delegate:self
cancelButtonTitle:nil
otherButtonTitles:nil];
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
spinner.center = CGPointMake(139.5, 75.5); // .5 so it doesn't blur
[alerta addSubview:spinner];
[spinner startAnimating];
[alerta show];
[self performSelector:@selector(close) withObject:self afterDelay:1];
}
-(void)close{
[alerta dismissWithClickedButtonIndex:0 animated:YES];
}
回答by Raees Madathil Valapuram
Add This in your .h file
UIAlertView *connectingAlert;
将此添加到您的 .h 文件中
UIAlertView *connectingAlert;
And Add these two functions in your .m files
并在您的 .m 文件中添加这两个函数
//show loading activity.
- (void)startSpinner:(NSString *)message {
// Purchasing Spinner.
if (!connectingAlert) {
connectingAlert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(message,@"")
message:nil
delegate:self
cancelButtonTitle:nil
otherButtonTitles:nil];
connectingAlert.tag = (NSUInteger)300;
[connectingAlert show];
UIActivityIndicatorView *connectingIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
connectingIndicator.frame = CGRectMake(139.0f-18.0f,50.0f,37.0f,37.0f);
[connectingAlert addSubview:connectingIndicator];
[connectingIndicator startAnimating];
}
}
//hide loading activity.
- (void)stopSpinner {
if (connectingAlert) {
[connectingAlert dismissWithClickedButtonIndex:0 animated:YES];
connectingAlert = nil;
}
// [self performSelector:@selector(showBadNews:) withObject:error afterDelay:0.1];
}
then call
然后打电话
[self startSpinner:@"Your message........"];
[self stopSpinner];
回答by pableiros
In Swift 3
在斯威夫特 3
let loadingAlertController = UIAlertController(title: "Loading", message: nil, preferredStyle: .alert)
let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .gray)
activityIndicator.translatesAutoresizingMaskIntoConstraints = false
loadingAlertController.view.addSubview(activityIndicator)
let xConstraint = NSLayoutConstraint(item: activityIndicator, attribute: .centerX, relatedBy: .equal, toItem: loadingAlertController.view, attribute: .centerX, multiplier: 1, constant: 0)
let yConstraint = NSLayoutConstraint(item: activityIndicator, attribute: .centerY, relatedBy: .equal, toItem: loadingAlertController.view, attribute: .centerY, multiplier: 1.4, constant: 0)
NSLayoutConstraint.activate([ xConstraint, yConstraint])
activityIndicator.isUserInteractionEnabled = false
activityIndicator.startAnimating()
let height: NSLayoutConstraint = NSLayoutConstraint(item: loadingAlertController.view, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 80)
loadingAlertController.view.addConstraint(height);
self.present(loadingAlertController, animated: true, completion: nil)
回答by Salman Iftikhar
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alarm" message:@"" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
UIActivityIndicatorView *loading = [[UIActivityIndicatorView alloc]
initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
loading.frame=CGRectMake(125, 50, 36, 36);
[loading startAnimating];
[alert addSubview:loading];
[alert show];