如何不在我的 UITableView 上显示“...”?

Posted

技术标签:

【中文标题】如何不在我的 UITableView 上显示“...”?【英文标题】:How do I not show the "..." on my UITableView? 【发布时间】:2013-07-12 06:28:10 【问题描述】:

我有一个 UiTableView,它会在它转到的视图上显示文本,但是我不希望它在一定数量的单词之后显示三个点。我该怎么做?

编辑

谢谢大家的帮助,我想通了。

通过storyboard,我只是把换行模式从截尾改为换行,我觉得Clip也可以换行。

【问题讨论】:

***.com/questions/9827126/… 你可以检查一下...这会在基于表格视图单元格的文本中创建标签 【参考方案1】:

如果文本很长并且被截断,则使用 lineBreakMode NSLineBreakByWordWrapping 而不是 NSLineBreakByTruncatingTail

i.e cell.textTitle.lineBreakMode = NSLineBreakByWordWrapping

【讨论】:

谢谢Divya,你给了我正确的想法,我通过故事板将换行模式从“截断尾巴”改为“自动换行”。【参考方案2】:

请尝试以下代码:

    #define FONT_SIZE 14.0f
    #define CELL_CONTENT_WIDTH 300.0f
    #define CELL_CONTENT_MARGIN 3.0f



- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

    return 1;



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

    NSString *text = [ObjectsArr objectAtIndex:indexPath.row];
    CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);
    CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
    CGFloat height = MAX(size.height, 44.0f);
    return height + (CELL_CONTENT_MARGIN * 2);


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    return [ObjectsArr count];


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    UILabel *label = nil;
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (!cell) 
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        label = [[UILabel alloc] initWithFrame:CGRectZero];

            [label setLineBreakMode:UILineBreakModeWordWrap];
            [label setMinimumFontSize:FONT_SIZE];
            [label setNumberOfLines:0];
            [label setFont:[UIFont systemFontOfSize:FONT_SIZE]];
            [label setTag:1];
            [[cell contentView] addSubview:label];
    

        NSString *text = [ObjectsArr objectAtIndex:indexPath.section];

        CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);
        CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
        if (!label)
            label = (UILabel*)[cell viewWithTag:1];

        [label setText:text];
        [label setFrame:CGRectMake(CELL_CONTENT_MARGIN, CELL_CONTENT_MARGIN, CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), MAX(size.height, 44.0f))];


    return cell;

如果您发现任何困难,请告诉我。 谢谢。

【讨论】:

您能否编辑答案并解释为什么这段代码会有所帮助? 以上代码对于基于我们必须在 UITableviewCell 上显示的内容的动态单元格大小很有用。【参考方案3】:

这意味着文本太长并被截断。您可以调整行高以完全显示文本,也可以使用较短的文本。

【讨论】:

【参考方案4】:

一种选择是根据单元格的大小找到最大长度,然后只显示左边的 n 位数字。这将确保您永远不会看到...

[@"abc xyz http://www.abc.com aaa bbb ccc" substringWithRange:NSMakeRange(8, 18)]

代码来自:Objective-C: Best way to extract substring from NSString?

【讨论】:

以上是关于如何不在我的 UITableView 上显示“...”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在横向上调整自定义 UITableView 分隔符并防止消失

原型 UITableViewCell 不在 Storyboard 中 UITableView 的顶部

如何让 UITableView 设置其单元格的插图而不在整个表格上设置插图?

UITableView 不在 UIScrollView 内滚动

不在 UITableView 中时如何设置 UITableViewCell 的选定背景颜色

delaysContentTouches = false 不在 UITableView Swift 中工作?