我怎么不在我的UITableView上显示“...”?

时间:2013-07-12 06:28:10

标签: ios uitableview

我有一个UiTableView,它会在视图上显示文字,但我不希望它显示一定数量的单词后面的三个点。我怎么能这样做?

修改

谢谢大家的帮助,我明白了。

通过故事板,我刚刚将截断模式从Truncating Tail更改为Word Wrap,我认为Clip也可以说出来。

4 个答案:

答案 0 :(得分:1)

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

i.e cell.textTitle.lineBreakMode = NSLineBreakByWordWrapping

答案 1 :(得分:1)

请尝试以下代码:

    #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;
}

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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