Я пытаюсь установить начальную ориентацию для моего приложения как UIInterfaceOrientationLandscapeLeft
Я не могу получить
'Initial interface orientation'[UIInterfaceOrientation]
, чтобы переопределить первый элемент в массиве
'Supported interface orientations'[UISupportedInterfaceOrientations]
Я заметил, что приложение для iphone всегда запускается с 'Portrait (нижняя домашняя кнопка)'. Массив:
'Supported interface orientations'[UISupportedInterfaceOrientations]
Portrait (bottom home button)
Landscape (left home button)
Landscape (right home button)
Как и ожидалось.
Если я включаю PORTRAIT HOMEКнопка BOTTOM на странице сводки OFF OFF BACK ON, затем порядок массива изменяется, и Portrait (нижняя кнопка home) перемещается вниз.
Landscape (left home button)
Landscape (right home button)
Portrait (bottom home button)
, и когда я запускаю приложение, оно теперь запускается в альбомной ориентации (слева).Кнопка «Домой»), так как это сейчас верхняя часть списка.Что хорошо
НО
, когда я добавляю
'Initial interface orientation'[UIInterfaceOrientation]
и устанавливаю его в
Landscape (right home button)
Его игнорируют и первый элемент в массивевместо этого используется
Landscape (left home button)
Я проверил mustAutorotateToInterfaceOrientation и блокирует только портрет вверх ногами
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
return YES;
}
}
Я также добавил код отладки
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if(interfaceOrientation == UIInterfaceOrientationPortrait){
NSLog(@"shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortrait");
}else if(interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown){
NSLog(@"shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortraitUpsideDown");
}else if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft){
NSLog(@"shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeLeft");
}else if(interfaceOrientation == UIInterfaceOrientationLandscapeRight){
NSLog(@"shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight");
}else {
NSLog(@"shouldAutorotateToInterfaceOrientation:UNKNOWN");
}
return YES;
}
и получаю
shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight
shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight
shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight
shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight
shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight
shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeLeft
shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeLeft
, чтобы вы могли видеть, что он пытается использовать
'Initial interface orientation'[UIInterfaceOrientation]
и установить его на
Landscape (right home button)
, но затем он переключается обратно на первый элемент в массивевместо этого используется
Landscape (left home button)
я что-то не так делаю?Это простой проект Xcode Template SINGLE VIEW ... просто добавьте код отладки.