我有一個UiTableView,它在視圖上顯示文本,但我不希望它顯示一定量的單詞後的三個點。我怎樣才能做到這一點?如何在我的UITableView上不顯示「...」?
編輯
謝謝大家的幫助,我想它了。
通過故事板,我只是將換行符模式從截尾改爲換行,我認爲Clip也可以。
我有一個UiTableView,它在視圖上顯示文本,但我不希望它顯示一定量的單詞後的三個點。我怎樣才能做到這一點?如何在我的UITableView上不顯示「...」?
編輯
謝謝大家的幫助,我想它了。
通過故事板,我只是將換行符模式從截尾改爲換行,我認爲Clip也可以。
IF文字很長,截斷然後用lineBreakMode NSLineBreakByWordWrapping代替NSLineBreakByTruncatingTail
i.e cell.textTitle.lineBreakMode = NSLineBreakByWordWrapping
謝謝Divya,你給了我正確的想法,我通過故事板將「換行」模式從「截尾」改爲「換行」。 –
這意味着文本太長而且會被截斷。您可以調整行高以充分顯示文字,也可以使用較短的文字。
請嘗試以下代碼:
#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;
}
我們如果您遇到任何疑難,我知道。 謝謝。
你能編輯答案並解釋爲什麼這段代碼應該有所幫助嗎?上面的代碼 – herzbube
對於基於我們必須在UITableviewCell上顯示的內容的動態單元大小非常有用。 – sagarcool89
一種方法是根據單元格大小找到最大長度,然後只顯示左邊的n位數字。這將確保你永遠也看不到......
[@"abc xyz http://www.abc.com aaa bbb ccc" substringWithRange:NSMakeRange(8, 18)]
代碼來自:Objective-C: Best way to extract substring from NSString?
http://stackoverflow.com/questions/9827126/change-the-uitableviewcell-height-according-to-amount -of-text你可以檢查這...在tableview單元格文本中創建標籤 – Anjaneyulu