在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 ,并没有解决问题。
答案 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];
}
}
}
无论如何,它不是最佳解决方案=(
答案 2 :(得分:0)
只是一个建议:确保所有元素都具有透明背景颜色或您正在使用的浅蓝色。显然,还有一种仍然具有白色背景颜色,可以是细胞内容视图(如果有的话)或细胞背景。