我有一个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
答案 0 :(得分:11)
创建UITableViewCell的子类(如named:CustomCell),并覆盖CustomCell.m中的方法:
- (id)initWithCoder:(NSCoder *)aDecoder{
self = [super initWithCoder:aDecoder];
if(self){
// Initialization code
[self setBackgroundColor:[UIColor clearColor]];
UIView * bgView = [[UIView alloc] initWithFrame:self.frame];
[bgView setBackgroundColor:[UIColor colorWithWhite:1 alpha:0.5]];
[self addSubview:bgView];
}
return self;
}
删除MasterViewController.m中的willDisplayCell方法
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.backgroundColor = [UIColor colorWithWhite:1 alpha:0.5];
}
更改MasterViewController.m中的cellForRowAtIndexPath
方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
[self configureCell:cell atIndexPath:indexPath];
return cell;
}
在故事板中更改单元格的类类型
试一试:D