2014-02-21 4 views
0

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

Изменение размера UILabel отлично работает, но UILabel не отображает его содержимое правильно. Содержимое содержится в 1 или 2 строках, даже если оно имеет место в кадре It.

BUT Если я просматриваю UITableView и возвращаюсь к этим ячейкам, все отображается отлично.

Я хочу, чтобы ячейки отображались правильно, начиная начало без прокрутки.

Вот некоторые скриншоты до и после прокрутки: UILabels (in blue) before scrolling

UILabel (in blue) after scrolling

Вот код, я использую для изменения размеров в UILabel:

CGSize expectedLabelSize = [titleText sizeWithFont:titleLabel.font 
          constrainedToSize:maximumLabelSize 
           lineBreakMode:titleLabel.lineBreakMode]; 
CGRect newFrame = titleLabel.frame; 
newFrame.origin.y = 10; 
newFrame.size.height = expectedLabelSize.height; 
titleLabel.frame = newFrame; 
accumulatedY += (expectedLabelSize.height + PADDING); 

expectedLabelSize = [empresatext sizeWithFont:empresaLabel.font 
           constrainedToSize:maximumLabelSize 
            lineBreakMode:empresaLabel.lineBreakMode]; 
newFrame = empresaLabel.frame; 
newFrame.size.height = expectedLabelSize.height; 
newFrame.origin.y = accumulatedY; 
empresaLabel.frame = newFrame; 
accumulatedY += (expectedLabelSize.height + PADDING); 
+0

Для начала вам следует использовать '(CGRect) boundingRectWithSize: (CGSize) варианты размера: (NSStringDrawingOptions) Параметры контекста: (NSStringDrawingContext *) context' as 'sizeWithFont' устарел. Также не помешает убедиться, что ваша строка UILabel установлена ​​на 0. – JMarsh

+0

Также убедитесь, что вы вычисляете высоту ячейки в 'heightForRowAtIndexPath', вы можете изменить размер метки, но она не поместится, если ячейка не будет знаете, насколько высок контент. – JMarsh

+0

Где именно вы вызываете код, который вы опубликовали? – RaffAl

ответ

2

I "фиксированной" проблема путем создания UILabel программно в «cellForRowAtIndexPath», как рекомендовано в этом потоке: UILabel in a UITableViewCell With Dynamic Height

Тем не менее заинтригованы, почему это не работает с UILabel созданной в InterfaceBuilder:/

Смежные вопросы