Xcode textLabel свойство UITableViewCell неправильно упаковывает текст - PullRequest
0 голосов
/ 06 марта 2020

У меня возникли проблемы с NSLineBreakByWordWrapping для текста, назначенного тексту метки UITableViewCell, и ячейка создается во время выполнения для этого UITableView .. Моя проблема заключается в том, что для некоторого текста он переносится и переместился на следующую строку, тогда как для некоторого текста он не переносится. Текст обрезается на концах. Я настраиваю текст, как показано в приведенном ниже коде.

cell.textLabel.numberOfLines = 10;
cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
cell.textLabel.text = MyString;

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

Для другого текста «любовь - это наше сочувствие к органической жизни, трогательно похотливое объятие того, что суждено разложить. ", это правильно слово переносится и переносится на следующую строку.

Подскажите, пожалуйста, какие настройки необходимо сделать для UITableViewCell, чтобы Word Wrapping функционировал для всего текста соответственно?

1 Ответ

0 голосов
/ 06 марта 2020

Ниже приведен полный тестовый модуль. Раскадровка содержит только TableViewController с классом, установленным в MyTableController.

@import UIKit;

@interface MyTableController : UITableViewController
@end

@interface MyTableController ()
@end

@interface MyCell: UITableViewCell
@end

@implementation MyCell
@end

@implementation MyTableController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.tableView registerClass:MyCell.class forCellReuseIdentifier:@"myCell"];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myCell" forIndexPath:indexPath];
    // UITableViewCell *cell = UITableViewCell.new; // << tested also with this

    cell.textLabel.font = [UIFont systemFontOfSize:25]; // << tested also with different font sizes
    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
    cell.textLabel.numberOfLines = 10; // << tested also with 0 value for dynamic height
    cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
    cell.textLabel.text = @"moral vacuum had been so successfully sucked clean of every molecule of real qualm or scruple";

    return cell;
}

@end

demo

...