Вы можете начать с использования методов 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 , который использует этот подход (как настраиваемый параметр).