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

时间:2017-09-28 19:54:49

标签: uitableview ios11 xcode9

在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 ,并没有解决问题。

enter image description here

3 个答案:

答案 0 :(得分:13)

试一试(你可以选择appearanceWhenContainedInInstancesOfClasses)。

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

    ...

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

    return YES;
}

答案 1 :(得分:0)

好吧,如果我在删除一行后立即重新加载表视图,动画就会消失,但至少没有奇怪的闪烁白色背景:

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

enter image description here

无论如何,它不是最佳解决方案=(

答案 2 :(得分:0)

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