2013-05-17 2 views
2

Я хочу иметь таблицу с некоторой меткой, а затем добавляю пользовательский интерфейс текстового поля после метки. Я хочу, чтобы метка имела фиксированный размер (скажем 150), а остальная ширина ячейки занимала текстовое поле.Таблица Cell TextLabel ширина рамки автоматически увеличивается

Поэтому я поставил рамку моей cell.textLabel в функции

cellForRowAtIndexPath

таким образом

[cell.textLabel setFrame:CGRectMake(cell.textLabel.frame.origin.x, cell.textLabel.frame.origin.y, 150, cell.textLabel.frame.size.height)]; 

, но это не кажется, работает.

Любые идеи, почему и что может быть моим решением?

ответ

3

почему вы не добавлять пользовательские этикетку на свой мобильный ...

UILabel *mylabel = [[UILabel alloc] initWithFrame:CGRectMake(5,5, 150, 40)]; 
[cell.contentView addSubview:mylabel]; 

В противном случае вам необходимо переопределить - LayoutSubViews метод и есть подкласс UITableViewCell ..

1

UITableViewCell С его ответственным за выкладывая свои подходы. У вас есть очень высокий уровень контроля над его компоновкой, используя перечисление UITableViewCellStyle.

Если вы хотите что-то пользовательское, переопределите UITableViewCell и добавьте представление в его содержимое или измените существующие виды. Когда вы это сделаете, обязательно сделайте макет в методе layoutSubviews, например.

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 
    self.textLabel.frame = CGRectMake(self.textLabel.frame.origin.x, 
             self.textLabel.frame.origin.y, 
             150, 
             self.textLabel.frame.size.height); 
} 

Рамка ячейки будет меняться при ее добавлении в UITableView. Когда кадр ячейки изменяет layoutSubviews вызывается, чтобы дать вам возможность настроить свои подпункты. По умолчанию UITableViewCell будет делать некоторые, если его собственные настройки, которые, вероятно, вызывают проблему.

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