首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CATransition推送无褪色

CATransition推送无褪色
EN

Stack Overflow用户
提问于 2013-01-12 13:17:21
回答 3查看 5.2K关注 0票数 9

我正在为Mac制作一个导航控制器类。

我想用kCATransitionPush动画替换当前视图。

就像这篇文章:

核心动画教程-向导对话框与过渡

CATransition的设置如下:

代码语言:javascript
复制
CATransition *transition = [CATransition animation];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromLeft;
[self.view setAnimations:@{ @"subviews" : transition }];

然而,当我替换视图,有一个淡出动画,这是自动添加。

代码语言:javascript
复制
[NSAnimationContext beginGrouping];
{
    [[self.view animator] replaceSubview:_currentViewController.view with:newViewController.view];
}
[NSAnimationContext endGrouping];

如何在不褪色的情况下制作推送动画?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-19 18:22:09

无论视图是否支持CA,获得平滑的核心动画转换的最佳方法是执行以下操作:

  1. 使用NSView -cacheDisplayInRect:toBitmapImageRep或类似的方法创建要动画的视图的图像
  2. 将该图像放入NSImageView中
  3. 图层返回图像视图,当图层倒转时,该视图将画得很好而不会出现故障。
  4. 将图像视图添加为要转换的视图的子视图。
  5. 使用NSView的动画代理动画化图像视图框架
  6. 动画完成后移除图像视图
票数 6
EN

Stack Overflow用户

发布于 2013-01-12 13:37:25

我怀疑您正在遇到隐式动画--核心动画将自动对发生在您自己事务之外的图层属性进行更改。

在这两个问题中,有几种禁用隐式动画的方法的总结:

如何禁用CALayer隐式动画?

禁用隐式动画in -[CALayer setNeedsDisplayInRect:]

...and您可以阅读更多关于隐式事务在核心动画文档中的信息。

票数 1
EN

Stack Overflow用户

发布于 2013-01-13 01:24:17

我认为从左边的过渡包括一个内置的淡出。IOS推送转换是可以的。

如果你不想那样的话,你可能不得不使用核心动画来进行你自己的推式转换。这在iOS和UIView动画中是很容易的。可悲的是,在Mac中没有类似的东西。我希望苹果能够回到Mac中,添加视图动画。我在iOS中使用它们会被宠坏,当我在Mac应用程序上工作时,我会想念它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14293684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档