我有一个 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/