我有一个 UiTableView,它会在它转到的视图上显示文本,但是我不希望它在一定数量的单词之后显示三个点。我怎样才能做到这一点?
编辑
谢谢大家的帮助,我想通了。
通过情节提要,我只是将换行模式从截尾更改为自动换行,我认为 Clip 也可能是单词。
我有一个 UiTableView,它会在它转到的视图上显示文本,但是我不希望它在一定数量的单词之后显示三个点。我怎样才能做到这一点?
编辑
谢谢大家的帮助,我想通了。
通过情节提要,我只是将换行模式从截尾更改为自动换行,我认为 Clip 也可能是单词。
如果文本很长且被截断,则使用 lineBreakMode NSLineBreakByWordWrapping 而不是 NSLineBreakByTruncatingTail
i.e cell.textTitle.lineBreakMode = NSLineBreakByWordWrapping
请尝试以下代码:
#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;
}
如果您发现任何困难,请告诉我。谢谢。
这意味着文本太长并且被截断。您可以调整行高以完全显示文本,也可以使用较短的文本。
一种选择是根据单元格的大小找到最大长度,然后只显示左边的 n 位。这将确保您永远不会看到...
[@"abc xyz http://www.abc.com aaa bbb ccc" substringWithRange:NSMakeRange(8, 18)]