2011-04-27 48 views
6

我想提出一个视图控制器这就是只使用出示一个视图控制器是屏幕

[self presentModalViewController:menu animated:YES]; 

问题是,当它呈现高度的一半的一半大小,视图控制器结束同大小作为屏幕。 我也尝试使'菜单'的屏幕的全尺寸,并将视图的透明度更改为白色,但这也不起作用。

回答

8

只需使用核心动画或动画过渡与一个UIView是屏幕尺寸的一半。您需要添加到主视图的持有者视图。

将半视图放置在屏幕下方(halfView.y = 480或320,具体取决于方向)。

向上动画。

事情是这样的,也许:

// set up an animation for the transition between the views 
    CATransition *animation = [CATransition animation]; 
    [animation setDuration:0.5]; 
    [animation setType:kCATransitionPush]; 
    [animation setSubtype:kCATransitionFromBottom]; 
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 

    [holderView addAnimation:animation forKey:@"SwitchToView1"]; 
5

在iPhone和iPod touch设备上,modalViewController的 视图始终是全屏显示的 。在iPad上, 演示文稿取决于 中的值modalPresentationStyle属性。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

如果你想只覆盖屏幕的某些部分,你可以使滑动的UIView的容器,无论您想要显示在屏幕上的位置的动画。

我建议你阅读这篇文章:Transparent Modal View on Navigation Controller

“我试图使视图背景 白”

这将definitley不工作,你可能已经但是写[UIColor clearColor],动画完成时,模态窗口覆盖的视图控制器视图将从屏幕上消失。所以如果你把背景变成白色,你最终可能会看到窗户背景,而不是你想要的。

0

你真的不想尝试使用UIViewController来做到这一点。将UIView添加到当前控制器的视图中,如果它需要管理其行为,则为该视图提供它自己的非UIViewController控制器对象。

我介绍了一些细节上如何你正在尝试做的是通过的UIViewController这里提供的合同之外:http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/

相关问题