【问题标题】:Core Animation action transition: how do it right核心动画动作过渡:如何正确
【发布时间】:2013-03-14 12:44:12
【问题描述】:

我在主窗口的内容视图中制作了一个带有一个视图的测试项目。窗口有两个按钮:出现和消失。我想要在按下出现按钮时动画视图外观,并在按下消失按钮时动画消失。我想通过图层操作来做到这一点。 换句话说,我想在每次从超级视图中添加或删除视图时制作动画。所以,在代码中我只想写 [parent addSubview:view] 或 [view removeFromSuperview] 并且动画应该在那一刻起作用。所以,Layer Actions 似乎符合我的需求。

这是应用截图和source code(XCode 4.6):

我是这样做的:

我创建了一个将出现/消失的视图并添加图层操作:

_coloredView = [[ColoredView alloc] initWithFrame:NSMakeRect(0, 0, 200, 200)];
_coloredView.bgColor = [NSColor yellowColor];
_coloredView.wantsLayer = YES;

// making appear transition from left

CATransition *appearTransition = [CATransition animation];
[appearTransition setDuration:2];
[appearTransition setType:kCATransitionPush];
[appearTransition setSubtype:kCATransitionFromLeft];
[_coloredView.layer addAnimation:appearTransition forKey:kCAOnOrderIn];

然后当点击出现按钮时,我调用

[contentView addSubview:self.coloredView];

当点击消失时,我调用:

[self.coloredView removeFromSuperview];

并且似乎某些部分有效。黄色矩形第一次出现时应如此。但是,这里列出了一些非常奇怪的事情:

  1. 每次单击按钮时(视图消失后)我都应该调用addAnimation:forKey:,因为第一次出现动画后将不再起作用。

  2. Disappear 根本不起作用(如果我尝试在视图初始化之后或在按下消失按钮之前添加代码)

  3. 当我尝试通过动画器添加子视图时,我的过渡不起作用 - 只显示默认的淡入动画。

  4. 似乎在从左到右的移动过程中会出现某种褪色效果。当您将持续时间设置为更大的值时,它是可见的。

【问题讨论】:

    标签: cocoa core-animation


    【解决方案1】:

    尝试@"subviews" 而不是kCAOnOrderIn

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多