现代模态观与animation效果

在我的iPhone应用程序中,我需要显示具有透明背景的模式视图,它应该以animationforms出现,就像它从视图中心出现并且其大小正在增加。

类似于“绘制东西”的iPhone应用程序,当我们点击设置button。

我该怎么做呢?

您可以执行以下4种转换样式之一:

viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; viewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; viewController.modalTransitionStyle = UIModalTransitionStylePartialCurl; [self presentModalViewController:viewController animated:YES]; 

如果你想要的东西不包括在这些默认值中,你将不得不build立自己的自定义animation来呈现模态视图。 像以下但显然是你想要的风格。

UIModalTransitionStyle水平移动

比方说,你有一个viewController这就是所谓的aScoreSheet,你想呈现。 尝试在视图控制器中定义这个方法来完成呈现。

 -(void) presentTransparentModalViewController: (ScoreSheet *) aViewController { scoreSheet = aViewController; UIView *view = aViewController.view; view.opaque = NO; [view.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { UIView *each = obj; each.opaque = NO; }]; [self.view addSubview:view]; view.center = CGPointMake(160, 800); //for iPhone [UIView animateWithDuration:0.9 delay:0 options:UIViewAnimationCurveEaseInOut animations:^{ view.center = CGPointMake(160, 240); } completion:^(BOOL finished) { self.view.userInteractionEnabled=YES; }]; } 

然后解散控制器:

 -(void) dismissTransparentModalViewControllerAnimated:(BOOL) animated{ if (animated) { [UIView animateWithDuration:0.4 animations:^{ scoreSheet.view.center = CGPointMake(scoreSheet.view.center.x, scoreSheet.view.center.y + 480); } completion:^(BOOL finished) { [scoreSheet.view removeFromSuperview]; scoreSheet = nil; }]; } } 

不是一个完整的答案,但也许你可以看看这个开源的库:

https://github.com/Split82/HMGLTransitions

它有一些自定义的模态转换,可能不完全是你正在寻找的,但你可以通过HMGLTransition来轻松添加转换。

希望这可以帮助