Monotouch UIScreen.MainScreen.Bounds не обновляется должным образом - PullRequest
0 голосов
/ 27 апреля 2011

В классе 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 голосов
/ 26 ноября 2011

Это не глюк Monotouch, или ваша ошибка;Это просто верно для всех устройств iOS.Даже делая это в XCode:

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

дает:

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

Независимо от ориентации устройства.Просто проверьте текущую ориентацию устройства и, если это альбомная, переключите размеры.Я не знаком с Monotouch или C #, но в Obj-C у нас есть [[UIDevice currentDevice] orientation] Я предполагаю, что ключевые слова похожи.

Обратите внимание: это также верно для экранов iPhone.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...