我有一个视图,其中包含附加到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加载。
答案 0 :(得分:1)
我相信你的问题是UIWebView异步加载项目。如果是这样,您需要开始加载,然后当UIWebView调用委托函数webViewDidFinishLoad:
时开始动画。
但是,在调用委托方法之前,UIWebView可能会渲染到屏幕,导致内容在动画开始之前闪烁。
如果是这样,那么您可能需要使用两个不同的UIWebView并将其从一个切换到另一个动画。