Monotouch UIScreen.MainScreen.Bounds未正确更新

时间:2011-04-26 22:04:50

标签: c# ipad

mViewController.xib.cs课程中,我需要在任何时间确定屏幕高度/宽度。所以我压倒了以下内容。我有调试器进入这些方法,奇怪的是,无论iPad处于哪个旋转状态,它都显示我的高度为1024,宽度为768,实际上它应该互换取决于iPad的方向(纵向)或景观)。有人可以告诉我我做错了吗?

    public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
    {

        RectangleF screeninfo = UIScreen.MainScreen.Bounds;

        float height = screeninfo.Height;
        float width = screeninfo.Width;

        return true;
    }

    public override void DidRotate( UIInterfaceOrientation fromInterfaceOrientation)
    {

        RectangleF screeninfo = UIScreen.MainScreen.Bounds;

        float height = screeninfo.Height;
        float width = screeninfo.Width;
    }       

1 个答案:

答案 0 :(得分:0)

这不是Monotouch故障或您的错误;所有iOS设备都是如此。甚至在Xcode中这样做:

NSLog(@"%@",NSStringFromCGRect([[UIScreen mainScreen] bounds]));

的产率:

{{0, 0}, {768, 1024}}

无论设备方向如何。只需检查当前的设备方向,如果是横向切换尺寸。我不熟悉Monotouch或C#,但在Obj-C中我们有[[UIDevice currentDevice] orientation]我假设关键字相似。

请注意:iPhone screens.

也是如此