呈现一个视图控制器,它是屏幕大小的一半

时间:2011-04-27 14:35:04

标签: iphone xcode ios

我正在尝试使用

呈现只有一半高度的视图控制器
[self presentModalViewController:menu animated:YES];

问题是当它出现时,视图控制器结束与屏幕相同的大小。 我还尝试将“菜单”设置为屏幕的整个大小,并将视图的透明度更改为白色,但这也不起作用。

3 个答案:

答案 0 :(得分: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"];

答案 1 :(得分: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

  

“我试图制作视图背景   白“

那肯定不起作用,你可以编写[UIColor clearColor]但是,当动画完成时,模态的视图控制器视图将从屏幕上消失。因此,如果你将背景设为白色,你可能最终会看到窗户背景,这是白色的,而不是你想要的。

答案 2 :(得分:0)

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

我介绍了一些有关您尝试做什么的详细信息超出了UIViewController提供的合同:http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/