呈现模态视图控制器时,核心动画层表现得很奇怪。 CATransform3D 问题
Posted
技术标签:
【中文标题】呈现模态视图控制器时,核心动画层表现得很奇怪。 CATransform3D 问题【英文标题】:Core animation layer is acting weird when presenting a modal view controller. CATransform3D issue 【发布时间】:2012-12-23 01:39:03 【问题描述】:我正在尝试创建自定义 UIView 转换。基本上,当呈现某个模态视图时,它所覆盖的视图就会移动到背景中。
为了实现这一点,我使用 Core 动画来操作视图层上的 CATransform3D,我将移至背景,然后在其上呈现模态视图。
为了将视图移动到背景中,我创建了一个 CABasicAnimation 来像这样动画化 CATransform3D 中的变化
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
CATransform3D toTransform = CATransform3DIdentity;
toTransform.m34 = 1.0f / -500.0f;
toTransform = CATransform3DTranslate(toTransform, 0.0f, 0.0f, -40.0f);
[animation setFromValue:[NSValue valueWithCATransform3D:CATransform3DIdentity]];
[animation setToValue:[NSValue valueWithCATransform3D:toTransform]];
[animation setDuration:1.0f];
self.menuView.layer.transform = toTransform;
[self.menuView.layer addAnimation:animation forKey:@"moveBackAnimation];
self.menuView 是我要移回的视图。
在我添加模态视图之前,这很好用。
RVLAddViewController *addViewController = [[RVLAddViewController alloc] initWithNibName:@"RVLAddViewController" bundle:nil];
[self presentViewController:addViewController animated:YES completion:nil];
当按下按钮时,我在动画下方调用此代码。如果未显示此代码,则所有操作都按预期工作,视图看起来就像它只是淡入远处,然后停留在那里。
当模态视图出现时,它不会逐渐消失在远处,而是向下射击到较小的尺寸并移动到左上角。
我会尽快上传一个示例应用程序,github 现已关闭。 edit 不需要 - 已经给出了解决方案! /编辑
【问题讨论】:
【参考方案1】:我搞砸了一段时间,看起来它与自动布局有关。如果您将其关闭,它会按预期工作。
【讨论】:
就是这样!谢谢 - 是时候了解更多关于自动布局的信息了。以上是关于呈现模态视图控制器时,核心动画层表现得很奇怪。 CATransform3D 问题的主要内容,如果未能解决你的问题,请参考以下文章