UITableViewAutomaticDimension не устанавливает правильную высоту с символами смайликов в UILabel UITableviewCell

Я использую UITableViewAutomaticDimension для динамической высоты ячеек UITableview. Все работает нормально, когда я устанавливаю обычный текст в метке внутри UITableviewCell.

Проблема возникает с высотой ячейки, когда я устанавливаю простой текст вместе с символами смайликов в метке. Высота ячейки динамически увеличивается, но высота неверна из-за символов эмодзи. Я думаю, что UITableview может рассматривать юникод как текст вместо значка эмодзи, поэтому он возвращает только высоту обычного текста.

В моем случае начало x метки также является динамическим.

Пожалуйста, посмотрите на скриншоты ниже, чтобы узнать о возникшей проблеме,

Какие-либо предложения?


person Naveen Sharma    schedule 03.11.2016    source источник


Ответы (1)


Удалите UITableViewAutomaticDimension, динамически вычисляйте высоту метки с помощью приведенных ниже методов и соответствующим образом управляйте высотой ячейки.

//--- вычислить высоту строки ---//

+(CGFloat)textHeight:(NSString*)text withFont:(UIFont*)font andMaxWidth:(CGFloat)maxWidth 
{
     CGFloat maxHeight = 99999;
     CGSize maximumLabelSize = CGSizeMake(maxWidth,maxHeight);
     NSDictionary *attributes = @{NSFontAttributeName: font};
     CGRect expectedLabelSize = [text boundingRectWithSize:maximumLabelSize options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:attributes context:nil];
     return expectedLabelSize.size.height;
}
person Teena nath Paul    schedule 03.11.2016
comment
Это работает. Спасибо!! - person Naveen Sharma; 03.11.2016