Fah*_*kar 8 objective-c uiactivityindicatorview ios
我有以下代码,我在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];
}
Run Code Online (Sandbox Code Playgroud)
我正在做的是webViewDidStartLoad我正在显示微调器并开始使用动画 [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
Run Code Online (Sandbox Code Playgroud)
那么问题就在下面......
[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];
Run Code Online (Sandbox Code Playgroud)
以下是我所拥有的......
一个第一个视图控制器,我有按钮,当我点击那些按钮,我来到第二个视图控制器,我在那里显示基于按下按钮的网络文件.
我的客户在进入第二个视图时想要一些效果,为此我添加了上面的代码.但正因为如此,我正面临着活动问题.
知道我需要做哪些改变?
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
Run Code Online (Sandbox Code Playgroud)
但是我需要这条线,因为动画没有发生......
今天我也注意到,如果我触摸webview,那么它就开始动画了
Grrr ......有人帮助我
您可能没有让它动画,因为您不在主 UI 线程上。尝试将它添加到主循环的调度队列中以强制它在主循环上并且它应该动画。
dispatch_async(dispatch_get_main_queue(), ^{
[mySpinner startAnimating];
}];
Run Code Online (Sandbox Code Playgroud)
删除代码中的 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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10252 次 |
| 最近记录: |