
[英]Activity Indicator not Spinning when Pulled the tableView to Refresh in Xcode using Swift
[英]Activity Indicator View not spinning
我在下面的代码中,我正在Webview中加载一些链接。
- (void)viewDidLoad
{
mySpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[self openWebPage:fileName];
[self.view addSubview:myWebView];
[self.view addSubview:mySpinner];
mySpinner.center = CGPointMake(self.view.frame.size.width / 2.0, 100);
}
-(void)openWebPage:(NSString*)address {
NSURL*url=[NSURL URLWithString:address];
NSURLRequest*request=[NSURLRequest requestWithURL:url];
myWebView.scalesPageToFit = NO;
[myWebView loadRequest:request];
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
UIAlertView *errorView = [[UIAlertView alloc] initWithTitle:@"Error!!!" message:@"Please make sure you are connected to 3G or Wi-Fi." delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil, nil];
[errorView show];
mySpinner.hidden = YES;
[mySpinner stopAnimating];
}
-(void)webViewDidStartLoad:(UIWebView *)webView2 {
NSLog(@"webViewDidStartLoad");
mySpinner.hidden = NO;
[mySpinner startAnimating];
NSLog(@"step 1");
NSDate *future = [NSDate dateWithTimeIntervalSinceNow: 2 ];
[NSThread sleepUntilDate:future];
NSLog(@"step 2");
}
-(void)webViewDidFinishLoad:(UIWebView *)webView2 {
NSLog(@"webViewDidFinishLoad");
mySpinner.hidden = YES;
[mySpinner stopAnimating];
}
我正在做的是在webViewDidStartLoad上,我正在显示微调器并开始使用[mySpinner startAnimating];
动画[mySpinner startAnimating];
,但没有旋转。 它只是保持原样(不旋转)。
知道出了什么问题吗?
我有webview委托@interface WebDetailsViewController : UIViewController<UIWebViewDelegate>
我还添加了[NSThread sleepUntilDate:future];
只是为了验证活动指示器视图是否在制作动画。
以下是我从NSLog获得的
2013-06-23 16:29:28.843 GulfLab[2048:907] webViewDidStartLoad
2013-06-23 16:29:28.845 GulfLab[2048:907] step 1
2013-06-23 16:29:30.847 GulfLab[2048:907] step 2
2013-06-23 16:29:31.836 GulfLab[2048:907] webViewDidFinishLoad
好吧好问题在下面的线...
[UIView beginAnimations: @"Showinfo"context: nil];
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.75];
[self.navigationController pushViewController: secondView animated:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
[UIView commitAnimations];
以下是我所拥有的...
一个第一个视图控制器,我有一个按钮,当我单击那些按钮时,我将进入第二个视图控制器,并在其中显示基于所按按钮的Web文件。
我的客户想要第二种视图时需要一些效果,为此我在上面的代码中添加了效果。 但是正因为如此,我面临着活动问题。
知道我需要做什么更改吗?
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
但是我需要这条线,否则动画不会发生...
也是在今天,我注意到如果我触摸webview,那么它将开始动画
rr ...有人帮我
由于您不在主UI线程上,因此可能无法对其进行动画处理。 尝试将其添加到主循环上的调度队列中,以将其强制在主循环上,并且它应该动画。
dispatch_async(dispatch_get_main_queue(), ^{
[mySpinner startAnimating];
}];
尝试在alloc init之后放置此代码
mySpinner.hidesWhenStopped = false;
在代码中删除mySpinner.hidden = YES / NO;
只需添加[mySpinner setHidesWhenStopped:YES]; 在viewDidload
然后,您就可以开始和停止了。
- (void)viewDidLoad
{
mySpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[mySpinner setHidesWhenStopped:YES];//set Hidden here
[self openWebPage:fileName];
[self.view addSubview:myWebView];
[self.view addSubview:mySpinner];
[self.view bringSubviewToFront:mySpinner]; //Add if still not show
}
我真的认为[NSThread sleepUntilDate:future];
在这种情况下,电话会杀死您。 我的大部分代码都是与第三方硬件集成的,该硬件将在某些情况下阻塞主线程,并且在发生这种情况时,我将具有与您类似的行为,即UI元素出现但处于稍微冻结的状态,直到我点击屏幕以“跳转开始” UI或阻止呼叫已完成。
如果您是我, sleepUntilDate
摆脱sleepUntilDate
调用,然后删除停止mySpinner
的调用,以确保它实际上正在旋转,以便在遇到较长的webViewDidFinishLoad
调用时,可以确保它可以正常工作。
这就是我在代码中使用微调框弹出窗口的方式。 并非您所要求的完全一样,但是有些相似。
在您的* .h文件中:
@interface v3ViewController : UIViewController
{
UIAlertView *megaAlert;
}
@property (nonatomic, retain) UIAlertView *megaAlert;
- (IBAction) invokeMegaAnnoyingPopup;
- (IBAction) dismissMegaAnnoyingPopup;
在您的* .m文件中:
@synthesize megaAlert;
- (IBAction) dismissMegaAnnoyingPopup
{
[self.megaAlert dismissWithClickedButtonIndex:0 animated:YES];
self.megaAlert = nil;
}
- (IBAction) invokeMegaAnnoyingPopup
{
self.megaAlert = [[UIAlertView alloc] initWithTitle:@"Please wait..."
message:nil delegate:self cancelButtonTitle:nil
otherButtonTitles: nil];
[self.megaAlert show];
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc]
initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
indicator.center = CGPointMake(130, 70);
[indicator startAnimating];
[self.megaAlert addSubview:indicator];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.