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

Viewed 1583

On iOS 11 device on deleting a UITableViewCell unexpected white background appears for some reason however all background colors are set to blue in storyboard (works fine on 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];
    }
}

Tried all types of UITableViewRowAnimation, doesn't solve the problem.

enter image description here

3 Answers

Try it (you can choose appearanceWhenContainedInInstancesOfClasses instead).

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

    ...

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

    return YES;
}

I tried everything that's possible and only thing that work was

adding

UITableViewCell.appearance().backgroundColor = UIColor.clear

in didFinishLaunchingWithOptions

Just a suggestion: Make sure all elements have a transparent background color or the light blue you are using. Apparently there is one that still has a white background color, could be the cell content view (if you have one) or the cell background.

Related