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

Luk*_*uke 4 rotation xamarin.ios ipad modalviewcontroller

我有一个 iPad 应用程序,它有一个UITabBarController作为根控制器。从其中一个选项卡中,我有一个,UIToolBar其中包含UIBarButtonItem,单击时会启动模态视图。

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

我从选项卡栏启动模态视图,并在ModalPresentationStyle要显示的视图中设置了 。

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

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

非常感谢

编辑

我还注意到,从 4.2 开始,当使用模态样式页面/表单表时,模态视图后面的视图不再变暗 - 是我呈现的视图错误还是这只是 4.2 的标准?

编辑2

代码:在我的默认情况下,UIViewController我只是简单地呈现模态视图,如下所示:

void HandleNewMsgButtonTouch(object sender, EventArgs e)
{
   PresentModalViewController(new ComposeMsgView(), true);
}
Run Code Online (Sandbox Code Playgroud)

在模态视图本身中,我在LoadView覆盖中指定了:

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

我已经覆盖了ShouldAutoRotateToInterfaceOrientation始终返回 true 。

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

Kru*_*lur 5

正如评论中所述,尝试以下操作:

\n
void HandleNewMsgButtonTouch(object sender, EventArgs e)\n{\n    UIViewController oController = new ComposeMsgView();\n    oController.ModalPresentationStyle = UIModalPresentationStyle.PageSheet;\n    PresentModalViewController(oController, true);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

LoadView() 来不及设置属性。

\n

以前的内容:\n请发布一些代码。视图肯定是变暗的,在 4.2 中也是如此。\n我假设您在错误的控制器上设置了演示样式,因为“PageSheet”在纵向模式下会转换为全屏。

\n

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

\n

任\xc3\xa9

\n