【问题标题】:Present a view Controller that is half the size of the screen呈现一个屏幕大小一半的视图控制器
【发布时间】:2011-04-27 14:35:04
【问题描述】:

我正在尝试展示一个只有一半高度的视图控制器

[self presentModalViewController:menu animated:YES];

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

【问题讨论】:

标签: iphone xcode ios


【解决方案1】:

只需使用屏幕大小一半的 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"];

【讨论】:

    【解决方案2】:

    在 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] 但是,当动画完成时,被模态视图覆盖的视图控制器的视图将从屏幕上消失。因此,如果您将背景设为白色,您最终可能会看到 windows 背景,这是白色的,不是您想要的。

    【讨论】:

      【解决方案3】:

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

      我在这里介绍了一些关于您尝试做的事情超出 UIViewController 提供的合同的细节:http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-27
        • 1970-01-01
        • 2011-12-08
        • 1970-01-01
        相关资源
        最近更新 更多