Я пытаюсь создать пользовательский вид таблицы.Динамическое изменение ширины метки внутри UITableViewCell
Как вы можете видеть на картинке, установить ширину метки по умолчанию как 160 точки в стороне на раскадровку и изменить ширину на лету, когда таблица загружается. Я реализую это, изменяя метод делегирования «cellForRowAtIndexPath».
Так, исходя из длины даты, я устанавливаю ширину метки 1, чтобы максимально использовать недвижимость на экране телефона.
CGFloat timeStampWidth = [cell.timestamp.text sizeWithFont:cell.timestamp.font].width;
CGFloat ksCompanyNameLableMaxWidth = 235;
NSLog(@"timeStampWidth:%f", timeStampWidth);
CGSize companyNameLableSize = CGSizeMake((ksCompanyNameLableMaxWidth - timeStampWidth), cell.companyNameLabel.frame.size.height);
CGRect newFrame = cell.companyNameLabel.frame;
newFrame.size = companyNameLableSize;
cell.companyNameLabel.frame = newFrame;
Но когда я загрузить приложение, все label1s установлены как 160 точки, установленные в раскадровке, хотя при отладке я видел мой код получить выполняется для каждой ячейки.
К моему удивлению, если я прокрутите вниз и прокручивать снова. Блок кода снова вызывается, и ярлык устанавливается так, как я хочу.
Кроме того, если переключаться между вкладками, метка снова восстанавливается в ненормальном состоянии.
Какие-либо правила автоматического изменения размера/размещения? Какие размеры печатаются в вашем журнале? – Wain
@Wain Отпечатанный размер правильный. Я думаю, что ячейка заменяется кэшированной ячейкой или каким-то другим механизмом замены. – TypingPanda