iOS 11/Xcode 9: UITableViewCell 白色背景在删除时闪烁

iOS 11/Xcode 9: UITableViewCell white background flickers on delete

在 iOS 11 设备上删除 UITableViewCell 由于某种原因出现意外的白色背景,但是故事板中的所有背景颜色都设置为蓝色(在 iOS10 上工作正常)。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        [self.bookmarks removeObjectAtIndex:indexPath.row];            
        [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
}

尝试了所有类型的UITableViewRowAnimation,没有解决问题。

尝试一下(您可以选择 appearanceWhenContainedInInstancesOfClasses)。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    ...

    [[UITableViewCell appearance] setBackgroundColor:[UIColor clearColor]];

    return YES;
}

只是一个建议:确保所有元素都具有透明背景色或您使用的浅蓝色。显然还有一个仍然具有白色背景颜色,可能是单元格内容视图(如果有的话)或单元格背景。

我尝试了所有可能的方法,唯一有效的是

添加

UITableViewCell.appearance().backgroundColor = UIColor.clear

didFinishLaunchingWithOptions