Я загружаю табличный вид, где каждая ячейка таблицы имеет некоторый левый отступ (мыслить потоки сообщений/ответы), а также содержит ярлык с динамической высотой (содержимое ответа). Я использую AutoLayout, поэтому размеры UILabel
. Для реализации отступа для каждого UITableViewCell
я следовал советам людей здесь на SO, чтобы переопределить layoutSubviews
для моего UITableViewCell
так это выглядит следующим образом:Отступы UITableViewCell с динамической высотой UILabel
- (void)layoutSubviews
{
[super layoutSubviews];
float indentPoints = self.indentationLevel * self.indentationWidth;
self.contentView.frame = CGRectMake(indentPoints,
self.contentView.frame.origin.y,
self.contentView.frame.size.width - indentPoints,
self.contentView.frame.size.height);
}
Что сейчас, хотя случается иногда текст UILabel будет порезами в нижней части. Мне кажется, что UILabel работает со старым размером кадра при расчете соответствующей высоты и самого рисования (поскольку это динамический), а не новый размер кадра с отступом - с отступом, для одного и того же текста меньше ширины, поэтому он должен знать, что он должен быть выше.
Если удалить этот отступ и комментарий моего переопределения layoutSubviews
или если я ставлю вызов [super layoutSubviews]
в конце, а не в начале, текст больше не отсечение, но я теряю отступ.
Я хочу, чтобы мой UITableViewCell
был соответствующим образом отступом и для моей динамической UILabel распознал новый размер кадра и рисовал без какого-либо обрезания. Я пробовал звонить в layoutIfNeeded
в разных местах для моего UILabel
без успеха.
Hi railparade, проблема с отключением текста на самом деле не связана с размером ячейки. Я могу установить размер ячейки до 1000, и текст UILabel будет по-прежнему резко отсечен. – Neil
@Neil. У вас есть ограничения на верхнюю и нижнюю часть ячейки для UILabel, чтобы она расширялась с помощью ячейки? Кроме того, у вас есть numberOfLines, установленный в 0? – rdelmar