【发布时间】:2013-12-08 21:31:42
【问题描述】:
我有一个带有自定义背景颜色的UIViewController。在它上面有一个 UITableView 和 UITableViewCells 是半透明的(不透明度为 0.5 的白色)。
我要责备的问题是在 iOS 7 中,当您有一个具有半透明背景的 UITableViewCell 并且您尝试删除/插入/移动行时(因此依靠动画效果)整个UITableView 及其单元格闪烁 仅0.1 秒,并将单元格背景设置为更透明的背景。这很烦人。
我唯一要做的就是设置self.view的背景颜色:
self.view.backgroundColor = [UIColor colorWithRed:0.4 green:0.5 blue:0.7 alpha:1];
并设置单元格的背景颜色:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.backgroundColor = [UIColor colorWithWhite:1 alpha:0.5];
}
这是一个向您展示问题的 gif:
这是一个超级简单的项目:https://github.com/socksz/TransparentCellFlashing
请帮我解决这个可笑的问题! :P
【问题讨论】:
-
你的 UITableView 的背景色是什么?如果您设置了一个,请尝试在您的 xib/storyboard 中将其设置为“清除”(或您选择的任何颜色)。通常在 iOS7 中,它被设置为“默认”,这是大多数这些问题的原因。
-
好像没关系。我尝试将
self.view(即表格视图)的背景颜色设置为[UIColor clearColor],并尝试将表格视图嵌入UIView(视图控制器的主视图)并设置背景此视图的颜色要清除。没用。 -
哦,好的。然后,您可能需要通过子类化 UITableViewCell 来覆盖 UITableViewCell 的 setSelected() 属性。或者至少使用 backgroundView 属性而不是 backgroundColor。
标签: ios objective-c uitableview ios7