Я пытаюсь отобразить таблицу UIActions в моем приложении.Он прекрасно работает в портретном режиме, но когда я пытаюсь отобразить его в альбомной ориентации, он все равно скользит снизу.Однако он больше не использует кнопки и дисплеи с управлением выбора, как это происходит в ландшафтном режиме.Это просто в неправильном положении.
Я не использую автоповорот и держу все в портретном режиме.Иногда я отображаю вещи в альбомной ориентации и хотел бы, чтобы таблица действий отображалась правильно.
Я устанавливаю ориентацию строки состояния следующим образом ...
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:NO];
Когда я нахожусь в«ландшафтный режим», и строка состояния всегда отображается правильно.Если я отображаю AlertView, он также отображается правильно.Затем я отображаю лист действий вот так
UIActionSheet *as = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel Button" destructiveButtonTitle:nil otherButtonTitles: @"button", nil];
as.actionSheetStyle = UIActionSheetStyleBlackOpaque;
[as showInView:self.view];
//[as showFromToolbar:toolbar];
Я также пытался отобразить его из делегата приложения и панели инструментов.Если я установлю ориентацию строки состояния непосредственно перед отображением, она все равно не будет работать.Я даже пытался.
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeLeft];
Кто-нибудь знает, почему лист действий может отображаться в неправильном положении, но с правильными элементами управления?Или как заставить лист действий отображаться в определенной позиции.Я бы предпочел не реализовывать собственную версию таблицы действий, чтобы она отображалась правильно.
Заранее спасибо.
Редактирование / решение: Принудительное отображение листа действия в ландшафтном режиме
Вот как мне удалось заставить его работатьЯ создал альбомный вид и добавил его в главное окно следующим образом:
landscapeView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 480, 480)];
landscapeView.transform = CGAffineTransformMakeRotation((-1)*M_PI/2);
landscapeView.bounds = CGRectMake(0, 0, 480, 380);
[appDelegate.window addSubview:landscapeView];
, а затем отобразил свой лист действий вот так
if (landscape) {
[menu showInView:landscapeView];
} else {
[menu showInView:self.view];
}
Во многом благодаря tc.для направления меня в правильном направлении здесь.