Как сделать UIActionSheet прозрачным при отображении на панели вкладок? - PullRequest
3 голосов
/ 20 апреля 2011

Я использую очень простой UIActionSheet. Вот код ниже:

 UIActionSheet *editActionSheet = [[UIActionSheet alloc] initWithTitle:@"What do you like to do?" 
                                                             delegate:self 
                                                    cancelButtonTitle:@"Cancel" 
                                               destructiveButtonTitle:@"Delete All Tasks" 
                                                    otherButtonTitles:@"Arrange Task List", @"Mark All as Done", nil];

editActionSheet.actionSheetStyle = UIBarStyleBlackTranslucent;
[editActionSheet showFromTabBar:appDel.tabBarController.tabBar];
[editActionSheet release];

Хотя я установил прозрачный стиль листа действий, он всегда выглядит непрозрачным. Я не знаю почему?

Спасибо,

Ответы [ 3 ]

9 голосов
/ 12 июня 2011

То, что я делал в создаваемом приложении, использовало [editActionSheet showInView:appDel.tabBarController.superview]; вместо [editActionSheet showFromTabBar:appDel.tabBarController.tabBar];.Выполняет одно и то же для всех намерений и целей, и его гораздо легче реализовать, чем ваш ответ.Просто по-другому.

6 голосов
/ 20 апреля 2011

Когда лист действий отображается на панели вкладок, он всегда будет иметь вид панели вкладок. Вы не можете сделать его прозрачным в этом случае. Я не пробовал создавать подклассы UIActionSheet и переопределять какие-либо свойства цвета или рисунка, но это, возможно, стоит попробовать.

Я бы рекомендовал изменить название вашего вопроса, чтобы отразить фактический вопрос (например, как я могу сделать UIActionSheet прозрачным при отображении на панели вкладок?)

1 голос
/ 20 апреля 2011

XJones, наконец, мне удалось получить полупрозрачный лист действий!.

Сначала я скрываю панель вкладок, затем показываю прозрачный лист действий и сразу после этого показываю панель вкладок. Код finally будет выглядеть так:

appDel.tabBarController.tabBar.hidden = YES;
NSString *controlBar;
if ([[settingsDictionary objectForKey:@"Task Control Bar"] isEqualToString:@"Hidden"]) {
    controlBar = @"Show Task Control Bar";
} else {
    controlBar = @"Hide Task Control Bar";
}

UIActionSheet *editActionSheet = [[UIActionSheet alloc] initWithTitle:@"What do you like to do?" 
                                                             delegate:self 
                                                    cancelButtonTitle:@"Cancel" 
                                               destructiveButtonTitle:@"Delete All Tasks" 
                                                    otherButtonTitles:@"Arrange Task List", @"Mark All as Done", controlBar, nil];

editActionSheet.actionSheetStyle = UIActionSheetStyleBlackTranslucent;
[editActionSheet showInView:self.tableView]; 
appDel.tabBarController.tabBar.hidden = NO;
[editActionSheet release];

Вы знаете что, теперь я знаю, почему Apple хотела, чтобы этот лист действий был непрозрачным. Кнопка отмены полупрозрачного листа действий немного конфликтует с выбранным элементом панели (синий). Это не так "замечено", но я думаю, что непрозрачное - лучшее решение.

...