如何从标签栏显示UIActionSheet半透明?

时间:2011-04-19 22:43:06

标签: iphone uiactionsheet

我使用的是非常简单的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 个答案:

答案 0 :(得分:9)

我在正在创建的应用中所做的是使用[editActionSheet showInView:appDel.tabBarController.superview];而不是[editActionSheet showFromTabBar:appDel.tabBarController.tabBar];。为所有意图和目的完成同样的事情,并且比你的答案更容易实现。另一种方式。

答案 1 :(得分:6)

当从标签栏显示操作表时,它将始终显示标签栏的外观。在这种情况下,你不能让它变得半透明。我没有尝试子类化UIActionSheet并覆盖任何颜色或绘图属性,但这可能值得一试。

我建议您更改问题的标题以反映实际问题(例如,如何从标签栏显示UIActionSheet半透明?)

答案 2 :(得分:1)

最后,XJones,我设法得到半透明的行动表!。

首先,我隐藏标签栏,然后在显示标签栏后显示半透明的操作表和immediatley。最终的代码就是这样:

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希望这个行动表不透明。半透明操作表取消按钮与所选条形项目(蓝色条目)略有冲突。它不是“如此”注意到,但我认为不透明的是更好的解决方案。