如何在动画期间更新UIWebView?

时间:2011-12-11 19:39:14

标签: objective-c xcode uiwebview ios5 uiviewanimation

我有一个视图,其中包含附加到GestureRecognizer的UIWebView(带有文本图像等)。一旦webView被“点击”,它就会翻转并在此Web视图上显示更新的文本,图像等。我有与此识别器关联的操作,如下所示:

- (IBAction)flipWebViewGestureRecognizer:(id)sender 
{
    // isFrontView is boolean to determine if card is front or back
    if(self.isFrontOfView)
    {
        self.isFrontOfView = NO;
        [UIView transitionWithView: self.imageView
                          duration: 1.0
                           options: UIViewAnimationOptionTransitionFlipFromTop
                        animations: ^{ [self loadBack]; }
                        completion: nil];
    }
    else
    {
        self.isFrontOfView = YES;
        [UIView transitionWithView: self.imageView
                          duration: 1.0
                           options: UIViewAnimationOptionTransitionFlipFromTop
                        animations: ^{ [self loadFront]; }
                        completion: nil];
    }
}

loadFront和loadBack方法如下(html本身缩短到最小):

- (void) loadFront
{
    NSString *html = @"<p>Front Of Card</p>";
    [self.viewWebView loadHTMLString:html baseURL:nil];
}

- (void) loadBack
{
    NSString *html = @"<p>Front Of Card</p> <br /> <p>as well as back of card<p>";
    [self.viewWebView loadHTMLString:html baseURL:nil];
}

从功能的角度来看,这非常有用。可以翻转卡片,并使用新的HTML文本更新Web视图。但是,实际Web视图的更新是在卡片已经完成翻转(动画之后而不是期间)之后发生的。一旦视图动画完成翻转,而不是之后立即加载html,我需要做什么才能使viewWebView加载。

1 个答案:

答案 0 :(得分:1)

我相信你的问题是UIWebView异步加载项目。如果是这样,您需要开始加载,然后当UIWebView调用委托函数webViewDidFinishLoad:时开始动画。

但是,在调用委托方法之前,UIWebView可能会渲染到屏幕,导致内容在动画开始之前闪烁。

如果是这样,那么您可能需要使用两个不同的UIWebView并将其从一个切换到另一个动画。