2014-02-25 3 views
-1

У меня есть табличное представление, и я хочу отображать несколько строк для текста в ячейках. Я попробовал следующий код и изменил высоту, но текст не сломался, а вторая строка не появилась. У вас есть какие-то сведения о том, что я делаю неправильно?Отображение нескольких строк в ячейке таблицы

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc] 
       initWithStyle: UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

    } 

    NSString *myString = [_menuItems objectAtIndex:[indexPath row]]; 
    UILabel *settingsLabel = (UILabel *)[cell viewWithTag:201]; 
    settingsLabel.text = myString; 
    settingsLabel.lineBreakMode = NSLineBreakByWordWrapping; 
    settingsLabel.numberOfLines = 0; 
    [settingsLabel sizeToFit]; 

    return cell; 
} 

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *str = [_menuItems objectAtIndex:indexPath.row]; 
    CGSize size = [str sizeWithFont:[UIFont fontWithName:@"Helvetica" size:17] constrainedToSize:CGSizeMake(200, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping]; 
    NSLog(@"%f",size.height); 
    return size.height + 10; 
} 
+0

Вы используете раскадровку? Какая версия iOS вы видите странное поведение с приведенным выше кодом? Я пробовал ваш код с небольшой модификацией с помощью раскадровки в iOS 7, он выглядит довольно хорошо с двумя строками текста. – Ricky

+0

Да, я использую раскадровку с iOS 7 и имитирую ее на iPhone 5 (4-дюймовый экран). В моем проекте я вижу только 1 строку текста. Может быть, с меткой на раскадровке ... – nabrugir

ответ

0

Для быстрой отладки задайте цвет фона некоторых видов, чтобы вы могли точно видеть, где они находятся. Например, насколько велика метка?

Вместо использования sizeToFit рассмотрите использование sizeThatFits: с размером, который ограничен доступной шириной в ячейке и с большой высотой (максимальная разумная высота, которую вы ожидаете). Затем используйте этот размер, чтобы установить рамку метки.

Еще лучше, используйте автоматическую компоновку или автоматическое изменение размера, чтобы указать, что метка должна расти (ее высота) с помощью ячейки. Затем, когда вы установили соответствующую высоту в heightForRowAtIndexPath:, ярлык должен автоматически изменяться, чтобы обслуживать весь текст.

+0

Текст всего 1 или 2 строки. Метка составляет 200x30. sizeThatFits не работает. Что вы понимаете, используя автоматическую компоновку или автоматическое изменение размера? – nabrugir

+0

https://developer.apple.com/library/ios/documentation/userexperience/conceptual/AutolayoutPG/Introduction/Introduction.html/https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class /UIView/UIView.html#//apple_ref/occ/instp/UIView/autoresizingMask – Wain

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