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

6

我正在尝试使用以下方法呈现一个高度只有一半的视图控制器:

[self presentModalViewController:menu animated:YES];

问题在于当它被呈现时,视图控制器的大小与屏幕相同。 我还尝试将“菜单”设置为全屏大小,并将视图的透明度更改为白色,但也不起作用。


我专门为此创建了一个 Github 仓库 BonsaiController - Warif Akhand Rishi
3个回答

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容器和您想要显示的内容滑动到屏幕上的位置。我建议您阅读这篇文章:导航控制器上的透明模态视图
“我试图使视图背景变白。”那肯定行不通,您可以写[UIColor clearColor],但是,当动画完成时,被模态视图覆盖的视图控制器的视图将从屏幕上消失。因此,如果您将背景设置为白色,您最终可能会看到窗口的白色背景,而这并不是您想要的。

0
你真的不想尝试使用UIViewController来做这件事。将一个UIView添加到当前控制器的视图中,如果需要管理其行为,则为该视图提供自己的非UIViewController控制器对象。
我在这里介绍了一些细节,说明你所尝试的方法超出了UIViewController提供的合同范围:http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接