UITableView содержит многострочную UILabel. sizeToFit на метке работает в первый раз, но неправильно изменяет размеры метки после перерисовки ячейки - PullRequest
1 голос
/ 25 февраля 2010

Я регистрирую информацию и определяю размер этикетки следующим образом:

NSLog([NSString stringWithFormat:@"before: %@, %f", [item valueForKey:@"item"], itemDescLabel.frame.size.width]);
[itemDescLabel sizeToFit];
NSLog([NSString stringWithFormat:@"after: %@, %f", [item valueForKey:@"item"], itemDescLabel.frame.size.width]);

Сначала это правильно и регистрирует данные как

before: Nachos, 280.000000
after: Nachos, 265.000000
before: Quesadilla, 232.000000
after: Quesadilla, 229.000000

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

before: Nachos, 0.000000
after: Nachos, 967.000000
before: Quesadilla, 171.000000
after: Quesadilla, 167.000000

Я использую метод, предложенный Apple, для загрузки пользовательского UITableViewCell из кончика, например

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    [[NSBundle mainBundle] loadNibNamed:@"ItemCell" owner:self options:nil];
    cell = itemCell;
    itemCell = nil;
}
UILabel *itemDescLabel = (UILabel *)[cell.contentView viewWithTag:1];

1 Ответ

4 голосов
/ 26 февраля 2010

Мне нужно было сбросить размер кадра UILabel перед вызовом sizeToFit. Ячейки используются повторно для экономии памяти, и, очевидно, sizeToFit иногда облажается, когда frame.size не является оригинальной меткой. Я понятия не имею, почему это так, но это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...