2010-01-05 4 views
10

У меня есть UITableViewCell, который я хотел бы добавить вправо (в дополнение к аксессуару). Я попытался установить размер textLabel на несколько пикселей уже, но он просто меняет его размер.изменить размер UITableViewCell textLabel

Есть ли способ изменить размер textLabel?

ответ

8

Объект, на который ссылается свойство textLabel по умолчанию, в экземплярах UITableViewCell типа UITableViewCellStyleDefault, не может быть изменен, по крайней мере, не в моем опыте. Лучшей идеей в этих случаях является создание собственного подкласса UITableViewCell, кода или даже с помощью Interface Builder, если вы хотите, и придать ему макет, который вы хотите.

16

На самом деле это может быть изменено, если вы создаете подкласс UITableViewCell и переопределить метод layoutSubviews:

- (void)layoutSubviews { 
[super layoutSubviews]; //The default implementation of the layoutSubviews 

CGRect textLabelFrame = self.textLabel.frame; 
textLabelFrame.size.width = _textLabelMaxWidth; 
self.textLabel.frame = textLabelFrame; 
} 

Надеется, что это помогает.

+0

Это работает только для меня, когда камера перезагружается, любые идеи? –

+0

@AdamCarter Да, вот как можно работать, если вы не хотите изменить его в другое время и из другого события. –

+1

Это было очень полезно для меня. У меня был подкласс UITableViewCell, и размеры ярлыков продолжали бы возвращаться к значениям по умолчанию для раскадровки. Я ценю совет с этим! – mikeho

1

Я заметил, что textLabel изменяет размеры, чтобы разместить аксессуар. Поэтому, если вы хотите, чтобы метка использовала всю ячейку, вы можете установить аксессуар в nil (я думаю, что это поведение по умолчанию в любом случае). Или, например, если вы хотите, чтобы метка занимала только левую половину ячейки, сделайте accessView пустой UIView, который охватывает правую половину ячейки. (Не нужно быть пустым, вы можете положить туда вещи ... я хочу сказать, что он сократит текстLabel.)

0

Вы можете сделать изменение размера ячейки UITableView самым простым способом. Во-первых, взгляните на мой образец проекта.

ResizableUIView

Он покажет вам, как вы можете изменить размер базы UITableView ячейки на ее внутренней составляющей в простейшим образом путем создания ограничений.

tblTest.estimatedRowHeight = 100 // This is where you can set your estimated row height 
    tblTest.rowHeight = UITableViewAutomaticDimension 

Другим важным фактом является то ваша метка линии: enter image description here

должно быть

Для того, чтобы вы поняли, я поставил UILabel внутри UIView, посмотрите на то, как я созданных ограничений на его родительский UIView.

Если вам по-прежнему нужна помощь, просто спросите.

Удачи

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