【问题标题】:CATransition displays animation out of the desired viewCATransition 在所需视图之外显示动画
【发布时间】:2013-05-15 09:43:32
【问题描述】:

我正在使用 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 设备屏幕中,而是显示在屏幕中间。问题是执行转换时,文本显示在网络视图之外,我想要的是动画不会离开网络视图。 你能帮忙吗?

【问题讨论】:

    标签: javascript iphone ios objective-c uiwebview


    【解决方案1】:

    这就是 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 个位图,将新的位图放在旧位图的左侧,然后将旧位图“推”到右侧。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 你的理解是对的,我只想要UIWebView里面的动画,我不喜欢文字出现在外面。不知道用JavaScript怎么做,但是说清楚一点,动画就是在两个html页面之间切换,这样可行吗?
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2018-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-09
        • 1970-01-01
        • 2018-08-18
        相关资源
        最近更新 更多