当前模式的看法与动画效果(Present Modal View with Animation Eff

2019-09-17 10:05发布

在我的iPhone应用程序,我需要显示与透明背景模式的看法和喜欢它是从观察中心的出现和它的规模在不断扩大,应该用动画显示。

类似像“画什么”的iPhone应用程序,当我们点击设置按钮。

我该怎么做呢?

Answer 1:

你可以做以下4种过渡样式之一:

viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
viewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
viewController.modalTransitionStyle = UIModalTransitionStylePartialCurl;

[self presentModalViewController:viewController animated:YES];

如果你想要的是不包括在这些默认值,你将不得不建立自己的自定义动画呈现模式的某种看法。 像下面,但显然对风格你想要的。

UIModalTransitionStyle水平运动



Answer 2:

比方说,你必须要呈现的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;
                     }];
}


}


Answer 3:

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

https://github.com/Split82/HMGLTransitions

它有一些定制模式的转变,也许不完全是你正在寻找的一个,但你可以很容易地通过继承添加过渡HMGLTransition

希望这可以帮助



文章来源: Present Modal View with Animation Effect