2010-09-23 2 views
5

У меня есть длинная строка, которая усекается при отображении в ячейке tablView. Я сделал это, чтобы сделать вид таблицы шире:Как отобразить несколько строк в ячейке tableView

tableView.rowHeight = 100; 

Как я могу сделать шрифт меньше, а также обернуть текст в табличной ячейке?

ответ

14

В tableView:cellForRowAtIndexPath: вы можете установить несколько свойств на textLabel (или descriptionLabel, в зависимости от того, какой стиль ячейки вы используете) для этого. Набор font изменить шрифт, linkBreakMode сделать это перенос слов, и numberOfLines установить, сколько строк не более (после чего он обрезает. Вы можете установить, что в 0 и не макс.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell* aCell = [tableView dequeueReusableCellWithIdentifier:kMyCellID]; 
    if(aCell == nil) { 
     aCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kMyCellID] autorelease]; 

     aCell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:10.0]; 
     aCell.textLabel.lineBreakMode = NSLineBreakByWordWrapping; // Pre-iOS6 use UILineBreakModeWordWrap 
     aCell.textLabel.numberOfLines = 2; // 0 means no max. 
    } 

    // ... Your other cell setup stuff here 

    return aCell; 
} 
+0

Этот устарел в iOS6. Как вы можете сделать это в iOS6? – Napolux

+1

Насколько я знаю, единственное, что устарело в iOS6, это 'UILineBreakModeWordWrap'.' NSLineBreakByWordWrapping' - эквивалент iOS6. Обновлен мой ответ. – zpasternack

0

Вы должны подклассифицировать UITableViewCell и сделать его UITextView вместо UITextField. Затем назначьте свой подкласс вашему UITableView.

2
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell* Cell = [tableView dequeueReusableCellWithIdentifier:kMyCellID]; 
    if(Cell == nil) { 
     Cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kMyCellID] autorelease]; 

     Cell.textLabel.font = [UIFont fontWithName:@"TimesNewRoman" size:10.0]; 
     Cell.textLabel.lineBreakMode = UILineBreakModeWordWrap; 
     Cell.textLabel.numberOfLines = 2; // 0 means no max. 
    } 

    // your code here 

    return Cell; 
} 
Смежные вопросы