我使用的是非常简单的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];
虽然我将动作表样式设置为半透明,但它始终显示为不透明。我不知道为什么?
谢谢,
答案 0 :(得分:9)
我在正在创建的应用中所做的是使用[editActionSheet showInView:appDel.tabBarController.superview];
而不是[editActionSheet showFromTabBar:appDel.tabBarController.tabBar];
。为所有意图和目的完成同样的事情,并且比你的答案更容易实现。另一种方式。
答案 1 :(得分:6)
当从标签栏显示操作表时,它将始终显示标签栏的外观。在这种情况下,你不能让它变得半透明。我没有尝试子类化UIActionSheet并覆盖任何颜色或绘图属性,但这可能值得一试。
我建议您更改问题的标题以反映实际问题(例如,如何从标签栏显示UIActionSheet半透明?)
答案 2 :(得分:1)
首先,我隐藏标签栏,然后在显示标签栏后显示半透明的操作表和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希望这个行动表不透明。半透明操作表取消按钮与所选条形项目(蓝色条目)略有冲突。它不是“如此”注意到,但我认为不透明的是更好的解决方案。