Это не правда, что вы не можете понять ориентацию запуска, это правда, что это тяжело в тылу, чтобы сделать это.
вот что вам нужно сделать.
ваш первый UIViewController должен иметь специальную логику для сбора необходимой вам информации.
вы можете даже захотеть создать UIStartupController только для этих целей, если это важно для вашего потока.
в случае моего проектау нас уже был такой контроллер запуска.
все, что вам нужно, это следующий код
-(id) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.launchOrientation = UIDeviceOrientationUnknown;
}
return self;
}
-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration
{
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
if (self.launchOrientation == UIDeviceOrientationUnknown && duration > 0)
self.launchOrientation = UIInterfaceOrientationPortrait;
else
self.launchOrientation = toInterfaceOrientation;
}
, в принципе, если мы не запускаем в UIInterfaceOrientationPortrait, первая последовательность обратного вызова ротации будет фактическираскрыть ориентацию запуска.
если запущен в UIInterfaceOrientationPortrait, то нам нужно проверить, что длительность первого поворота не равна нулю, а затем мы знаем, что он был запущен из портрета.