<pre name="code" class="objc">
//弹出效果
-(void)show:(UIView *)showView
{
showView.center=self.view.center;
[self.view addSubview:tableView];
CAKeyframeAnimation *popAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
popAnimation.duration =0.4;
popAnimation.values = @[[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.01f, 0.01f, 1.0f)],
[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.1f, 1.1f, 1.0f)],
[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.9f, 0.9f, 1.0f)],
[NSValue valueWithCATransform3D:CATransform3DIdentity]];
popAnimation.keyTimes = @[@0.2f, @0.5f, @0.75f, @1.0f];
popAnimation.timingFunctions = @[[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[showView.layer addAnimation:popAnimation forKey:nil];
}
//消失效果
-(void)hiden:(UIView *)hidenView
{
CAKeyframeAnimation *hideAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transforms"];
hideAnimation.duration = 0.4;
hideAnimation.values = @[[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.1f, 1.1f, 1.0f)],
[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0f, 1.0f, 1.0f)],
[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.00f, 0.00f, 0.00f)]];
hideAnimation.keyTimes = @[@0.2f, @0.5f, @0.75f];
hideAnimation.timingFunctions = @[[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
hideAnimation.delegate = self;
[hidenView.layer addAnimation:hideAnimation forKey:nil];
}
<pre name="code" class="objc">//动画完成后我们需要将视图移除
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
[self.tableView removeFromSuperview];
}