ios – 动画时透明的UITableViewCell闪烁背景

我有一个自定义背景颜色的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

解决方法

>创建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

以上是来客网为你收集整理的ios – 动画时透明的UITableViewCell闪烁背景全部内容,希望文章能够帮你解决ios – 动画时透明的UITableViewCell闪烁背景所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。