Я пытаюсь отобразить таблицу UIA в моем приложении. Он отлично работает в портретном режиме, но когда я пытаюсь отобразить его в альбомной ориентации, он все еще скользит снизу. Однако он больше не использует кнопки и дисплеи с управлением выбора, как в ландшафтном режиме. Его как раз в неправильном положении.UIActionSheet не отображается должным образом в ландшафтном режиме
Я не использую автоматическое вращение и сохраняю все в портретном режиме. Иногда я показываю вещи в ландшафтном режиме и хотел бы, чтобы рабочий лист отображался правильно.
Я устанавливаю ориентацию бара статуса, как так ...
[[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];
Кто-нибудь есть идеи, почему лист действий может отображаться в неправильном положении, но с правильными элементами управления? Или как заставить таблицу действий отображать в определенной позиции. Я бы предпочел не использовать собственную версию листа действий, чтобы он отображался правильно.
Заранее спасибо.
Редактировать/Решение: Action Force листа, чтобы показать в ландшафтном режиме
Вот как я сумел заставить его работать, я создал пейзажную и добавить его к моему главному окну так:
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];
}
Большое спасибо дц. для указания меня в правильном направлении.
Почему вы используете 380 вместо 320? 'CGRectMake (0, 0, 480, 380);' – mahboudz
просто любопытно: почему вы делаете это как (-1) * M_PI, чтобы сделать его отрицательным, когда вы можете просто поместить его как -M_PI? – SpaceDog
@mahboudz: Я не помню в момент tbh, может быть опечатка. – katbyte