2015-11-26 3 views
1

У меня есть ячейка tableview, и внутри нее у меня есть кнопка. Внутри этой кнопки отображается отображаемый текст, который является динамическим. Это работает, однако, когда я просматриваю вверх и вниз, текст исчезает и появляется через четверть секунды позже, и это довольно заметно, особенно при быстрой прокрутке.NSAttributedString не плавно прокручивается (исчезает/появляется) в таблицеViewCell

При отладке, я заметил, если я закомментировать линии attString = [[NSMutableAttributed... до последнего [attString appendAttributedString:[[... метода (ниже мой комментарий), и установить название profileIDButton в @"test", не было никакой проблемы при прокрутке. Я считаю, что выделение/инициализация attString вызывает проблемы с прокруткой. Как я могу избавиться от этого исчезновения и появиться четверть второго более позднего поведения? Есть ли способ создать присланную строку и добавить к ней без выделения/инициализации памяти в cellForRowAtIndexPath?

//Within the cellForRowAtIndexPath method: 

    // HERE IS WHERE I BELIEVE IS THE CAUSE OF TEXT DISAPPEARING DUE TO MEMORY ALLOCATION. 
    attString = [[NSMutableAttributedString alloc] init]; 
    [attString appendAttributedString:[[NSAttributedString alloc] initWithString:@"@" attributes:dict1]]; 
    [attString appendAttributedString:[[NSAttributedString alloc] initWithString:senderName attributes:dict1]]; 
    [attString appendAttributedString:[[NSAttributedString alloc] initWithString:@" posted "  attributes:dict2]]; 
    [attString appendAttributedString:[[NSAttributedString alloc] initWithString:recepientName  attributes:dict2]]; 
    [attString appendAttributedString:[[NSAttributedString alloc] initWithString:@"."  attributes:dict2]]; 

    [cell.profileIDButton setAttributedTitle:attString forState:UIControlStateNormal]; 

Лучшие клетки, отображающие это освежающее поведение при прокрутке
enter image description here

+1

Вы должны использовать [профайлер времени] (http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode), чтобы выяснить, где происходит замедление, если таковое имеется, на самом деле , Из вашего описания проблемы я подозреваю, что вы можете перегружать ячейки больше, чем вы думаете. Поведение, которое вы описываете, не похоже на то, что оно связано с памятью, и если ваши строки занимают много времени, вы будете видеть прокрутку затмения, а не текст, появляющийся и исчезающий. Можете ли вы опубликовать видеоролик о возникающей проблеме? –

+0

С вашего скриншота похоже, что метки оживляют их непрозрачность, или, может быть, ячейка меняет выбранное или выделенное состояние. Это возможно? –

+0

Возможно, вы можете попробовать переместить словарь атрибутов вне cellForRow coz, он будет продолжать создавать новый при загрузке каждой ячейки, в cellForRow будет задан только текст строки – Tj3n

ответ

1

Установите тип кнопки для «UIButtonTypeCustom» возможно работать.

+0

WOW ЭТО БЫЛО ОТВЕТ! Я никогда не думал, что исправление будет таким простым .. Я в шоке. –

Смежные вопросы