使用动画进行 WebView 页面更改

C4W*_*C4W 5 cocoa-touch objective-c uiwebview uikit ios

我一直在网上搜索如何将动画合并到 UIWebView 控件中的示例,但一无所获。

我对动画并不挑剔(一旦我了解了如何将其附加到动作上,我就可以搞乱它),我只想要不仅仅是从一个网页到另一个网页的鲜明过渡、卷曲的页面、从左侧开始的动画(旧页)到右(新页),无论怎样都可以。

有人可以发布一个示例或将我引导到一个页面来解释我如何执行此操作吗?我阅读了 CATransition 上的文档,但我仍然不知道如何将其合并到我的 UIWebView 导航中。

C4W*_*C4W 2

经过一番尝试后,我得到了我想要的效果,我可能需要稍微调整一下,但这是我想到的:

在执行 loadRequest 之前(我现在已经更改了代码,以便通过 shouldStartLoadWithRequest 捕获所有页面更改,然后使用 webview loadRequest 手动设置新页面),我转到我编写的名为 animatePage 的卷曲动画例程:

- (void) animatePage 
{
  CATransition *animation = [CATransition animation];
  [animation setDelegate:self];
  [animation setDuration:1.0f];
  animation.startProgress = 0.5;
  animation.endProgress   = 1;
  [animation setTimingFunction:UIViewAnimationCurveEaseInOut];
  [animation setType:@"pageCurl"];

  //[animation setType:kcat];
  [animation setSubtype:kCATransitionMoveIn];

  [animation setRemovedOnCompletion:NO];
  [animation setFillMode: @"extended"];
  [animation setRemovedOnCompletion: NO];
  [[myWebView layer] addAnimation:animation forKey:@"WebPageCurl"];
}
Run Code Online (Sandbox Code Playgroud)

因此,要使用向上卷曲的页面动画来动画页面更改,我基本上会这样做:

[self animatePage];
[myWebView loadRequest:myRequest];
Run Code Online (Sandbox Code Playgroud)

我可以animatePage在 loadRequest 之前或之后调用该例程,这并不重要。

我知道这可能不是完成工作的“正确”方式,但它似乎确实完成了工作。就像我说的,我需要到处拨打它,但到目前为止我对结果很满意。