Не удается заставить UILabel отображать более 3 строк

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

Ниже приведен код, который мне нужно создать и отобразить UILabel:

   self.commentLabel = [self newLabelWithPrimaryColor:[UIColor blackColor] selectedColor:[UIColor whiteColor] fontSize:12.0 bold:YES];
    self.commentLabel.textAlignment = UITextAlignmentLeft; // default
    self.commentLabel.lineBreakMode = UILineBreakModeWordWrap;
    self.commentLabel.numberOfLines = 0; // no limit to the number of lines 
    [myContentView addSubview:self.commentLabel];
    [self.commentLabel release];

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


person Community    schedule 14.07.2009    source источник
comment
Совет: добавление к методам префикса new (newLabelWithPrimaryColor) будет генерировать предупреждения компилятора для более новых компиляторов llvm clang. Это соглашение об именах намекает на то, что возвращаемое значение не освобождается автоматически, и что вызывающая сторона должна вызвать освобождение. Лучшее имя было бы labelWithPrimaryColor:.   -  person Joe    schedule 22.06.2011


Ответы (2)


Кажется, что прямоугольник метки слишком мал, чтобы вместить весь текст... Вы должны сделать прямоугольник больше, чтобы он не отображал эллипсы и отображал весь текст

person Daniel    schedule 14.07.2009
comment
Да, я изменял размер ячейки таблицы, но не UILabel. Я перешел к методу создания метки и создал математическую функцию для установки высоты на основе количества символов в комментарии. Спасибо Даниэль. - person ; 14.07.2009

С концепцией дизайна автомакета не устанавливайте ограничения по высоте для UILabel и не устанавливайте no. строк как 0.

Autolayout автоматически заботится о динамической высоте этикетки в соответствии с текстом этикетки. Если этикетка имеет однострочный текст, она будет занимать только однострочное пространство. И если метка имеет более одной строки, она изменит размер метки в соответствии с размером текста и количеством строк, необходимых для отображения текста.

  • Назначение и реализация tableview dataSource и делегата
  • Назначьте UITableViewAutomaticDimension для rowHeight и предполагаемойRowHeight
  • Реализовать методы делегата/источника данных (т.е. heightForRowAt и вернуть ему значение UITableViewAutomaticDimension)

-

Цель C:

// in ViewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

  @property IBOutlet UITableView * table;

@end

// in ViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];
    self.table.dataSource = self;
    self.table.delegate = self;

    self.table.rowHeight = UITableViewAutomaticDimension;
    self.table.estimatedRowHeight = UITableViewAutomaticDimension;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    return UITableViewAutomaticDimension;
}

Посмотрите на этот ответ: Динамически настроить UILabel в UITableViewCell?

person Krunal    schedule 21.06.2017