removeFromSuperview完成后,将显示一个白屏



所以对于我的应用程序,我添加了一个视图(aView)在我的当前视图(classesWebView)的顶部作为子视图。所有的aView都是一个UIView,上面有一个UIActivityIndicatorView,当下面的视图(classesWebView)加载适当的网页时,它应该会动画。

我可以看到,classesWebView网页确实出现(aView的alpha值为。5),但只要它完成加载所有的方式,aView被发送[aView removeFromSuperview],它消失了,但在它消失后,所有剩下的是一个白色的屏幕在它的地方。

我已经对另外两个方法这样做了,我不知道为什么,只有这个方法,它拒绝合作。

如有任何建议,不胜感激。该应用程序适用于iOS 6。

viewDidLoad方法:

-(void)viewDidLoad
{
    [super viewDidLoad];
    classesWebView.delegate = self;
    [classesWebView addSubview:aView];
    NSURL *class = [NSURL URLWithString:@"mywebistelink"]; 
    NSURLRequest *classRequest = [NSURLRequest requestWithURL:class]; 
    [classesWebView loadRequest:classRequest];   
}

webViewDidStartLoad方法:

preView和switchView为活动指标。

- (void)webViewDidStartLoad:(UIWebView *) webview
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    if(aView.superview != nil)
    {
        [preView startAnimating];
    }
    else
    {
        [switchView startAnimating];
    }
}

webViewDidFinishLoad方法:

- (void)webViewDidFinishLoad:(UIWebView *) webview
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    if(aView.superview != nil)
    {
        [aView removeFromSuperview];
        [preView stopAnimating];
        [preView setOpaque:false];
    }
    else
    {
        [switchView stopAnimating];
        [switchView setOpaque:false];
    }
}

[进一步明确:我有if语句的原因,是因为我想要classesWebView加载页面时的另一个指标,但我不希望它出现,除非aView已经走了(因为aView已经有它的指示器:预览)]

编辑:只是为了证明这是唯一的removeFromSuperview,这是导致问题,如果我调用[aView setAlpha:0.0]它消失了,下面的网页正确加载。但第二个我调用[aView removeFromSuperview]网页变成了一个白屏。T_T

try this:

    NSURL *class=[NSURL URLWithString:[yourwebistelink stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    NSURLRequest *request=[NSURLRequest requestWithURL:class];
   [self.classesWebView loadRequest:request];

试试这个…并尽量不要为activityIndicator添加aView。,试试这个这个指示activityIndicator

UIWebView * classesWebView = [[UIWebView alloc] init];
[classesWebView addSubview:activityIndicator];
[self.activityIndicator startAnimating]; //for activityIndicator
NSURLRequest *request = [NSURLRequest requestWithURL:weburl];
classesWebView.frame = CGRectMake(0, 200, 768, 400);
[classesWebView setScalesPageToFit:NO];
[classesWebView loadRequest:request];

- (void)webViewDidStartLoad:(UIWebView *)thisWebView
{
}
- (void)webViewDidFinishLoad:(UIWebView *)thisWebView
{
[self.activityIndicator stopAnimating];
    [activityIndicator removeFromSuperview];
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    NSLog(@"Error : %@",error);
}

如果webView仍然显示空白,那么你必须用这个

来编码你的url
NSString *encodedString=[graphStringUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *weburl = [NSURL URLWithString:encodedString];
NSURLRequest *request = [NSURLRequest requestWithURL:weburl];

然后加载这个请求在webView

[classesWebView loadRequest:request];

我不认为你应该添加子视图到UIWebView。尝试将aView添加到包含classesWebView的视图中,看看是否可以解决问题。

所以我从来没有得到它的工作,但我欺骗了它通过设置[aView setAlpha:0]。这正是我所需要的。谢谢你们的建议。

最新更新