UIScreen.MainScreen.Bounds在旋转设备之前不正确

时间:2011-04-20 12:27:57

标签: xamarin.ios

我已经对此进行了搜索但找不到任何内容。在我的monotouch应用程序中,我调用UIScreen.MainScreen.Bounds来获取屏幕的宽度/高度。当我首次在 landscape 模式下启动应用程序时,宽度返回为768,高度为1024(即纵向)。一旦我旋转设备一次,一切都很好。

有没有人为此工作?我注意到,如果我添加一个UIScrollView作为我的控制器的主视图,由IOS正确调整大小,所以信息似乎在那里,这是一个monotouch的错误吗?

这发生在模拟器和设备(iPad)上。

1 个答案:

答案 0 :(得分:1)

我的理解是,当应用程序启动时,iOS会假设设备处于纵向模式,这就是为什么它将起始边界报告为768 x 1024.如果您在应用程序启动时将设备保持在横向模式,iOS将以纵向模式启动,然后在视图控制器允许的情况下执行旋转到横向模式。这在视图控制器的视图出现在屏幕上之前发生。结果是,用户看起来应用程序以横向模式启动,但实际上它是在纵向模式下启动并立即在幕后旋转到横向模式。如果你将旋转代码用“Console.WriteLine(UIScreen.MainScreen.Bounds)”散布,我想你会发现这种情况。同样奇怪的事情发生在UIScreen.MainScreen.ApplicationFrame。