【问题标题】:How to update UIWebView during an animation?如何在动画期间更新 UIWebView?
【发布时间】:2011-12-11 19:39:13
【问题描述】:

我有一个视图,其中包含一个附加到 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 视图的更新发生在卡片已经完成翻转之后(在动画之后而不是在期间)。一旦视图动画完成翻转,而不是之后立即加载,我需要做什么才能让 viewWebView 已经加载更新的 html。

【问题讨论】:

    标签: objective-c xcode uiwebview ios5 uiviewanimation


    【解决方案1】:

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

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

    如果是这样,那么您可能必须使用两个不同的 UIWebView 来执行此操作,并以动画方式从一个切换到另一个。

    【讨论】:

    • 好吧,看起来我最终不得不用数据加载两个 UIWebView,然后在动画期间加载/卸载每个。感谢您的提示!
    猜你喜欢
    • 2016-08-23
    • 2023-04-10
    • 2021-07-16
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多