Пользовательские TableViewCells мерцают при перезагрузке таблицы - PullRequest
0 голосов
/ 28 января 2020

скачал демонстрационное приложение чата с net. Я должен изменить направление расположения двух пользовательских ячеек (входящие сообщения слева, исходящие сообщения справа). Направление расположения как входящих, так и исходящих ячеек осталось на данный момент. Таким образом, я изменил направление исходящих ячеек как правильное с помощью UISemanticContentAttributeForceRightToLeft.

Он работает нормально с входящими сообщениями с левой стороны, с исходящими сообщениями с правой стороны. Но пользовательские ячейки tableview мерцают при перезагрузке таблицы.

Пожалуйста, помогите мне без изменения дизайна ячеек исходящих сообщений.

1 Ответ

0 голосов
/ 28 января 2020

Вы должны удалить dispatch_async материал из cellForrowAtIndexPath.

Эта функция уже выполняется в потоке пользовательского интерфейса, поэтому нет необходимости отправлять что-либо в основную очередь.

Кроме того, поскольку ячейки используются повторно, вам также следует установить semanticContentAttribute на слева направо при indexPath.row%2 != 0, так как в противном случае вы будете получать только ячейки справа налево после прокручивая время:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellIdentifier = @"MovieCell";
    MoviesTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
    if (indexPath.row%2 == 0) {
        cell.contentView.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;
    } else {
        cell.contentView.semanticContentAttribute = UISemanticContentAttributeForceLeftToRight;
    }

    return cell; 
}
...