получить центр iPad вид в зависимости от ориентации - PullRequest
2 голосов
/ 28 мая 2011

На данный момент у меня есть следующий код:

float xCenter;
    float yCenter;
    if (self.splitViewController.interfaceOrientation == UIInterfaceOrientationPortrait || self.splitViewController.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown){
        xCenter = 384;
        yCenter = 512;
    } else if (self.splitViewController.interfaceOrientation == UIInterfaceOrientationLandscapeLeft || self.splitViewController.interfaceOrientation == UIInterfaceOrientationLandscapeRight){
        xCenter = 512;
        yCenter = 384;
    }


uinc.view.superview.center = CGPointMake(xCenter, yCenter);

Есть ли лучший способ упростить это?Все, что я хочу сделать, это показать это в центре экрана.Я попытался присвоить его `self.splitViewController.view.center, но он не дает мне нужный центр.

uinc - это UINavigationController, представленный в UIModalPresentationSheet, но я хочу изменить его размери, следовательно, должны установить местоположение.

1 Ответ

4 голосов
/ 28 мая 2011

Вы можете начать с использования методов UIInterfaceOrientationIs*.

Вот один способ переписать этот фрагмент:

CGPoint centerPoint = (UIInterfaceOrientationIsPortrait(self.splitViewController.interfaceOrientation) ?
                       CGPointMake(384, 512) : CGPointMake(512, 384));

Вместо жестких кодов центральных точек вы можете получитьцентр экрана с помощью bounds или applicationFrame методов [UIWindow mainWindow] (которые не учитывают ориентацию).

Другим решением было бы использование центра представления вашего UISplitViewController:

UIViewController *splitViewController = [[[UIApplication sharedApplication] delegate] splitViewController];
CGRect bounds = [splitViewController.view bounds];
CGPoint centerPoint = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));

Если вы пытаетесь создать индикатор загрузки или какой-либо другой элемент, который должен отображаться поверх всего остального на экране, вам следует рассмотреть возможность добавления его непосредственно в UIWindow вашего приложения.В этом случае вам нужно будет определить ориентацию интерфейса и соответственно повернуть вид.

UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;

Я предлагаю посмотреть на источник MBProgressHUD , который использует этот подход (как настраиваемый параметр).

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