如何执行这些动画视图过渡?

时间:2011-09-24 01:27:58

标签: ios core-animation

我是Core Animation的新手,我需要知道如何做2个动画:

  1. 我需要通过淡化黑色(完全释放第一个视图控制器)来切换XIB
  2. 我需要模仿UINavigationController的pushViewController动画(切换XIB并释放第一个视图控制器)
  3. 如何实现这些动画视图过渡?

1 个答案:

答案 0 :(得分:1)

我已经完成了这两个动画,但可能没有你想要的确切方式。

  1. 将视图淡化为黑色,我采用了另一种方式,而是添加了一个新的 覆盖整个黑色和动画窗口的子视图 Alpha从0.0到1.0。取得了很好的效果。

    [UIView animateWithDuration:0.5                  动画:^ {_easterEgg.alpha = 1.0; }                  完成:^(BOOL完成){[self animateIndex:0]; }];

  2. 在UINavigationController中滑动视图。我没有完全像UINavigationController这样做,因为它做了多个动画,但我确实有一个新的视图滑动屏幕上的前一个视图。此代码将新视图的帧设置在当前视图右侧的屏幕上,构建一个离屏幕左侧的帧位置,并抓取当前可见帧。最后,它只是将新视图从屏幕右侧动画显示到可见帧,以及从可见帧到左侧的旧视图。然后删除旧视图。

    CGRect offRight = CGRectMake(_contentView.frame.size.width,                             0,                             _contentView.frame.size.width,                             _contentView.frame.size.height);

    CGRect offLeft = CGRectMake(-_ contentView.frame.size.width,                              0,                              _contentView.frame.size.width,                              _contentView.frame.size.height);

    CGRect visibleFrame = CGRectMake(0,0,_contentView.frame.size.width,_contentView.frame.size.height);

    [view setFrame:offRight]; UIView * currentView = [[_contentView subviews] lastObject]; [_contentView addSubview:view];

    [UIView animateWithDuration:0.5                  动画:^ {                      [currentView setFrame:offLeft];                      [view setFrame:visibleFrame];                  }                  完成:^(BOOL完成){                      [currentView removeFromSuperview];                  }];