Я пытаюсь сделать UITableViewCell, который настраивает его высоту в зависимости от длины отображаемой строки, но я получаю зависание этого метода.Почему мой размерWithFont: constrainedToSize: lineBreakMode: всегда возвращает ноль?
Вот что я получил:
NSString *text = @"A really long string in here";
CGSize theSize = [text sizeWithFont:[UIFont boldSystemFontOfSize:18.0f] constrainedToSize:CGSizeMake(265.0f, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
NSString *stringHeight = [NSString stringWithFormat:@"%d", theSize.height];
Независимо от того, stringHeight
отображается как 0
. Что мне не хватает?
Спасибо!
Ааа, переход на '% f' полностью работал. У меня создалось впечатление, что '% d' также работал на' floats', но это явно не так. «MAXFLOAT», похоже, работает нормально, хотя он будет работать так же хорошо с достаточно большим числом. Спасибо за быстрый ответ! – Triz
Кроме того, '% d' = подписанный int, а не double (это то же самое, что и'% i'). '% f' (или'% lf') будет работать как для float, так и для double. (Кроме того, под 64-битным CGFloat является двойным, но это явно не применимо здесь.) – Wevah
Лучшей константой здесь является, вероятно, CGFLOAT_MAX, но нет никакой опасности использовать MAXFLOAT. Либо яснее, чем выбирает случайное большое число, что может быть истолковано более поздними читателями как преднамеренное ограничение. –