Динамическая ширина UILabel с sizeToFit в ячейке

У меня есть кастомный UITableViewCell с UILabel внутри на Storyboard. Я устанавливаю текст этого UILabel динамически, и мне нужно соответствующим образом изменить ширину UILabel, потому что после него у меня есть еще один UILabel, который должен оставаться бок о бок.

я пытаюсь с

> MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
> author = @"Some dynamic text";
> cell.authorLabel.text = author;
> [cell.authorLabel sizeToFit];

Что происходит: при первом рендере UILabel просто сохраняет ширину, установленную для storyboard, поэтому либо текст обрезается, либо после него остается слишком много места.

После прокрутки ячейки удаляются из очереди, и метод sizeToFit применяется правильно, но слишком поздно, потому что второй UILabel уже расположен не в том месте. (не могу опубликовать фото из-за низкого ограничения репутации)

Любая идея?


person stilllife    schedule 22.07.2013    source источник
comment
см. этот вопрос   -  person Lithu T.V    schedule 22.07.2013


Ответы (2)


возможно, вы имели в виду что-то вроде этого:

MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
author = @"Some dynamic text";
cell.authorLabel.text = author; <-- excluded in your code
[cell.authorLabel sizeToFit];

Если это не работает, попробуйте использовать что-то вроде этого:

подкласс UITableViewCell и перепишите метод ниже:

- (void)setSelected:(BOOL) selected
{ 
    [super setSelected:selected];
    [self.authorLabel sizeToFit];
}
person user2595925    schedule 22.07.2013
comment
Извините, что забыл строку, которую вы правильно добавили. В любом случае это не решает проблему - person stilllife; 23.07.2013

используйте этот для получения динамической высоты и ширины,

CGSize sizeDynamic  = [str sizeWithFont:[UIFont fontWithName:@"Arial-BoldMT" size:14] constrainedToSize:CGSizeMake(CGFLOAT_MAX,CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping];

вы можете получить,

sizeDynamic.height and sizeDynamic.width values
person Balu    schedule 22.07.2013
comment
Это работает для правильного изменения размера UILabel в зависимости от содержимого, но у меня все еще есть проблема, заключающаяся в том, что таким образом метка рядом не перемещается, поэтому она не соблюдает ограничение горизонтального интервала, и конечный результат - два перекрывающихся текста . Должен ли я рассчитать новую позицию второй метки на основе новой ширины первой метки? Н.Б. Если этот sizeWithFont работает, а sizeToFit в той же точке не работает, что мне не хватает в методе sizeToFit? - person stilllife; 23.07.2013