首页 文章

iPad FormSheet / PageSheet模态视图,旋转时填满整个屏幕.T

提问于
浏览
3

我有一个iPad应用程序,它有一个 UITabBarController 作为根控制器 . 从其中一个标签中,我有一个包含 UIBarButtonItemUIToolBar ,点击后会启动模态视图 .

模态视图在首次启动时显示正确的大小(横向和纵向)但是如果旋转设备,则模态视图将展开以填充屏幕 - 无论您从该点开始旋转设备多少 .

我'm launching the modal view from the tab bar and I'已在要显示的视图中设置 ModalPresentationStyle .

无论我是将其设置为 FormSheet 还是 PageSheet ,这都会影响ModalView .

有没有人经历过类似的行为,如果是这样,你是如何解决的?

非常感谢

EDIT

我也注意到,自从4.2使用模态样式页面/ FormSheet后,模态视图背后的视图不再变暗 - 我是否认为视图错误或仅仅是4.2的标准?

EDIT 2

代码:在我的默认 UIViewController 中,我只是按如下方式呈现模态视图:

void HandleNewMsgButtonTouch(object sender, EventArgs e)
{
   PresentModalViewController(new ComposeMsgView(), true);
}

在模态视图中,我已在 LoadView 覆盖中指定:

public override void LoadView()
{
   base.LoadView ();
   ...
   // initialser code related to the view
   ...
   View.AutoresizingMask = UIViewAutoresizing.None;
   ModalPresentationStyle = UIModalPresentationStyle.PageSheet;
   ModalTransitionStyle = UIModalTransitionStyle.CrossDissolve;
}

我已经覆盖了 ShouldAutoRotateToInterfaceOrientation 以便始终返回true .

无论我是否使用Formsheet / Pagesheet,它们在首次启动时都显示正确的宽度(无论是横向还是纵向 - 我知道PageSheet将填充纵向视图)但是在旋转时,模态视图将填充屏幕(如如果我用FullScreen呈现ModalView) .

3 回答

  • 4

    如评论中所述,试试这个:

    void HandleNewMsgButtonTouch(object sender, EventArgs e)
    {
    UIViewController oController = new ComposeMsgView();
    oController.ModalPresentationStyle = UIModalPresentationStyle.PageSheet; PresentModalViewController(oController, true);
    }
    

    LoadView()为时已晚,无法设置属性 .

    上一内容:请发一些代码 . 视图肯定是暗淡的,也是4.2 . 我假设您在错误的控制器上设置演示样式,因为在纵向模式下“PageSheet”会转换为全屏 .

    您必须在要在moda视图中显示的控制器上设置演示文稿样式,而不是在IS显示的那个上 . 因此,如果要显示的控制器是“oToShow”,而您显示的控制器是“oCurrent”,则必须为“oToShow”设置样式 . 尝试将其设置为FormSheet,它始终位于顶部,永远不会全屏 .

    勒内

  • 0

    你可以通过使用不同的风格来解决它

    UIModalPresentationFullScreen: 这是默认样式,顾名思义导致模态视图全屏显示,与iPhone完全一致

    UIModalPresentationPageSheet: 模态视图占据整个屏幕高度,但宽度设置为纵向模式下屏幕的宽度 . 这意味着当设备处于纵向模式时,它仍然占据整个屏幕 . 但是在横向模式下,它会使某些基础主视图仍然可见,但由于用户无法与未覆盖的主视图控制器进行交互而变暗 .

    UIModalPresentationFormSheet: 模态视图的宽度和高度均设置为小于屏幕大小 . 模态视图以屏幕为中心,主视图控制器的未覆盖区域变暗以防止用户交互 . 如果模态视图使用键盘,则模态视图向上移动以腾出空间 .

    UIModalPresentationCurrentContext :使用与父主视图控制器相同的样式显示模态视图 .

    还记得调整大小和位置,因为它总是以PageFormSheet的默认大小显示 .

    希望这有助于Alex

  • 1
    View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;
    

相关问题