iPad FormSheet/PageSheet模式视图,当旋转填充整个屏幕时.T
我有一个iPad应用程序,它有一个UITabBarController
作为根控制器。从其中一个选项卡中,我有一个UIToolBar
,其中包含一个UIBarButtonItem
,点击后会启动模态视图。iPad FormSheet/PageSheet模式视图,当旋转填充整个屏幕时.T
模式视图首次启动时(横向和纵向)均以正确的大小显示,但如果旋转设备,则模式视图将展开以填充屏幕 - 无论您从中旋转设备多少点起。
我从标签栏启动模态视图,并在视图中设置了ModalPresentationStyle
。
这会影响ModalView,不管我是否将其设置为FormSheet
或PageSheet
。
有没有人经历过类似的行为,如果是的话,你是如何解决它的?
非常感谢
编辑
我也注意到,由于4.2采用莫代尔风格页/港前赛绩时背后的模态视图视图不会变暗出来了 - 我会提出视图错误还是这只是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
来alw ays也是如此。
无论我是否使用Formsheet/Pagesheet,它们在首次启动时都显示正确的宽度(无论是横向还是纵向 - 我知道PageSheet将填充纵向视图),但是在旋转时,模态视图将会填充屏幕(就像我用FullScreen呈现了ModalView一样)。
正如评论指出,试试这个:
void HandleNewMsgButtonTouch(object sender, EventArgs e)
{
UIViewController oController = new ComposeMsgView();
oController.ModalPresentationStyle = UIModalPresentationStyle.PageSheet; PresentModalViewController(oController, true);
}
的loadView()是来不及设置的属性。
上一个内容: 请张贴一些代码。这个观点在4.2中也绝对暗淡了。 我假设您将演示文稿样式设置在错误的控制器上,因为在纵向模式下,“PageSheet”会转换为全屏。
您必须在您想在moda视图中显示的控制器上设置演示风格,而不是在显示的控制器上演示风格。因此,如果要显示的控制器是“oToShow”,而您显示的是“oCurrent”,则必须设置“oToShow”的样式。 尝试将其设置为FormSheet,该FormSheet始终位于顶部,永远不会全屏显示。
René
View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;
恐怕这不起作用 - 但谢谢! – Luke 2010-12-22 09:51:03
你可以解决它通过使用不同的风格,像
UIModalPresentationFullScreen:这是默认的风格,顾名思义导致模态视图被精确地呈现全屏幕与iPhone
UIModalPresentationPageSheet:模式视图占用全屏高度,但宽度设置为纵向模式下屏幕的宽度。这意味着当设备处于肖像模式时,它仍占用全屏。然而,在横向模式下,它会让一些底层主视图仍然可见,但会变暗,因为用户无法与未覆盖的主视图控制器进行交互。
UIModalPresentationFormSheet:模态视图的宽度和高度均设置为小于屏幕大小。模态视图集中在屏幕上,主视图控制器的未覆盖区域变暗以防止用户交互。如果模态视图使用键盘,则模态视图会向上移动以腾出空间。
UIModalPresentationCurrentContext:使用与父母视图控制器相同的样式显示模式视图。
还记得调整大小和位置,因为否则它总是以PageFormSheet的默认大小显示。
希望这有助于 亚历
请查看代码示例的最新编辑 - 据我所知,我已经正确呈现视图(即,在我呈现的视图控制器中设置呈现样式)。 – Luke 2011-01-17 09:27:01
您是否尝试过: void HandleNewMsgButtonTouch(object sender,EventArgs e) UIViewController oController = new ComposeMsgView(); oController.ModalPresentationStyle = UIModalPresentationStyle.PageSheet; PresentModalViewController(oController,true); } – Krumelur 2011-01-17 09:31:29
我只是试过,它的工作就像一个魅力。如果你让它成为答案,我会标记它是正确的。非常感谢! – Luke 2011-01-17 10:17:22