0

在我的 iPhone 应用程序中,我需要显示一个具有透明背景的模态视图,它应该出现动画,就像它从视图中心出现并且它的大小正在增加一样。

当我们单击设置按钮时,类似于“绘制某些东西”iPhone App。

我该怎么做呢?

4

3 回答 3

3

您可以执行以下 4 种过渡样式之一:

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

[self presentModalViewController:viewController animated:YES];

如果你想要一些不包含在这些默认值中的东西,你将不得不构建自己的自定义动画来呈现模态视图。像下面这样,但显然是你想要的风格。

UIModalTransitionStyle 水平移动

于 2012-05-22T10:16:26.170 回答
3

假设您有一个要呈现的名为 aScoreSheet 的 viewController。尝试在将要进行呈现的视图控制器中定义此方法。

-(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;
                     }];
}


}
于 2012-05-23T06:21:27.617 回答
0

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

https://github.com/Split82/HMGLTransitions

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

希望这可以帮助

于 2012-05-22T10:19:21.923 回答