0

我正在使用 CATranstion 动画在 UIWebView 中的多个 HTML 页面之间移动。

[WebView loadHTMLString:htmlPage baseURL:nil];
            CATransition *animation = [CATransition animation];
            [animation setType:kCATransitionPush];
            [animation setSubtype:kCATransitionFromLeft];
            [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
            [animation setSpeed:0.3];
            [[WebView layer] addAnimation:animation forKey:nil];
            [UIView commitAnimations];

Web 视图不会显示在整个 iOS 设备屏幕中,而是显示在屏幕中间。问题是执行转换时,文本显示在网络视图之外,我想要的是动画不会离开网络视图。能否请你帮忙。

4

3 回答 3

2

这就是 CATransition 的工作方式。

我建议您将 UIWebView 添加为某些容器视图的子视图并clipsToBounds = YES为容器视图设置。它应该像你想要的那样工作。

尝试这样的事情:

UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(60, 60, 200, 200)];
containerView.clipsToBounds = YES;
[self.view addSubview:containerView];

_webView = [[UIWebView alloc] initWithFrame:containerView.bounds];
_webView.backgroundColor = [UIColor redColor];
[containerView addSubview:_webView];

您的转换代码没问题,这应该可以满足您的要求

所发生情况的简化说明:Transition 对动画前后的图层进行“位图截图”。然后只是制作动画。在您的情况下,它会获得 2 个位图,将新的位图放在旧位图的左侧,然后将旧位图“推”到右侧。

于 2013-05-15T12:47:06.607 回答
1

我不完全确定我是否正确理解了您的问题,但听起来您只想在 Web 视图中为内容设置动画。如果是这种情况,最好使用 JS 和 CSS 动画,而不是使用 Core Animation。目前您正在操作整个UIWebView,并且 API 不允许您访问 DOM 之外的内容。

于 2013-05-15T09:51:07.647 回答
0

我发现的一个解决方案是添加两个具有清晰背景的虚拟视图以隐藏在 Web 视图之外显示的文本

于 2013-05-15T10:49:19.590 回答