2017-09-28 58 views
8

Na urządzeniu z systemem iOS 11 usunięcie usuniętego elementu UITableViewCell z jakiegoś powodu pojawia się nieoczekiwane białe tło, jednak wszystkie kolory tła są ustawione na niebiesko w scenorysie (działa poprawnie na iOS10).iOS 11/Xcode 9: UITableViewCell białe tło migocze podczas usuwania

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

wypróbowaniu wszystkich rodzajów UITableViewRowAnimation, nie rozwiązuje problemu.

enter image description here

+0

Ja też mam ten problem. Ustawienie "widoku tła" komórki na widok z innym niż białym tłem nie ma żadnego efektu. –

+0

Już grałem wokół widoku tableView i komórki (contentVieц/accessoryView) tła/odcieni kolorów bez efektu ... –

+0

Czy w tym przypadku należy zgłosić błąd firmie Apple? –

Odpowiedz

6

Wypróbuj go (można wybrać appearanceWhenContainedInInstancesOfClasses zamiast).

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

    ... 

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

    return YES; 
} 
+0

Potwierdziłem, że został naprawiony ten problem na symulatorze. – Kawatan

+0

Tak, ustawiłem wszystkie kolory tła, aby wyczyścić (z wyjątkiem tableView.backgroundColor, który jest nadal niebieski) i zaimplementowałem proxy, jak sugerujesz - działa! Dziękuję Ci! –

+0

To działa! Swift 4: 'UITableViewCell.appearance(). BackgroundColor = .clear' – Geek20

0

Ok, jeśli odświeżyć widok tabeli tuż po usunięciu wiersza, animacja odchodzi, ale przynajmniej nie ma dziwnie miga białym tle:

- (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

Zresztą to nie najlepsze rozwiązanie = (

0

Tylko jedna sugestia: Upewnij się, że wszystkie elementy mają przezroczysty kolor tła lub jasnoniebieski, którego używasz. e to taki, który wciąż ma biały kolor tła, może to być widok zawartości komórki (jeśli ją masz) lub tło komórki.