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

标签 ipad rotation xamarin.ios modalviewcontroller

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

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

我正在从标签栏启动模态视图,并设置了 ModalPresentationStyle在要呈现的 View 中。

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

有没有人遇到过类似的行为,如果有,您是如何解决的?

非常感谢

编辑

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

编辑 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 将填充纵向 View )但是在旋转时,模态视图将填充屏幕(如如果我用 FullScreen 呈现 ModalView)。

最佳答案

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

void HandleNewMsgButtonTouch(object sender, EventArgs e)
{
    UIViewController oController = new ComposeMsgView();
    oController.ModalPresentationStyle = UIModalPresentationStyle.PageSheet;
    PresentModalViewController(oController, true);
}
LoadView() 来不及设置属性。
以前的内容:
请发布一些代码。 View 肯定变暗了,在 4.2 中也是如此。
我假设您在错误的 Controller 上设置了演示样式,因为“PageSheet”在纵向模式下会转换为全屏。
您必须在要在模态视图中显示的 Controller 上设置演示样式,而不是在正在显示的 Controller 上。因此,如果您要显示的 Controller 是“oToShow”,而您要显示的 Controller 是“oCurrent”,则您必须为“oToShow”设置样式。
尝试将其设置为 FormSheet,它将始终位于顶部并且永远不会全屏显示。
勒内

关于iPad FormSheet/PageSheet 模态视图,旋转时会填满整个屏幕。T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4470524/

相关文章:

ios - Apple App Store 审核 - 提交审核申请时,相关网站是否可以在互联网上访问?

objective-c - App 在设备上不流畅?

ios - 如何使 iPhone 库中的图像在 iOS 中旋转?

android - 移动应用程序 : Localfiles VS LocalDB?

html - 关于视口(viewport)的问题

ios - iPad Retina 启动图像——仅显示图像的上半部分

java - 多边形无法正确旋转

java - 单击时按钮旋转

c# - 用于 Android/MonoTouch System.Net.WebException : Request aborted 的单声道

ios - Xamarin.Forms Foundation.MonoTouchException : Objective-C exception thrown. 名称: NSInternalInconsistencyException