我有一個帶有自定義單元格的tableview,在我的單元格中,我有一個標籤和一個圖像,標籤中的文本很長,所以我只是顯示前2行,然後使用換行符顯示3dots「...」,然後當用戶點擊單元格時,它將展開以顯示標籤的全文 當錄製時更改單元格的高度,我這樣做是這樣的:如何在更改高度時在單元格中顯示labelview的全文
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([tableView indexPathsForSelectedRows].count) {
if ([[tableView indexPathsForSelectedRows] indexOfObject:indexPath] != NSNotFound) {
MsgInfo *info = [_msgInfos objectAtIndex:indexPath.row];
NSString *displayString = info.msg;
CGRect boundingRect =
[displayString boundingRectWithSize:CGSizeMake(self.tableView.frame.size.width - 2 * 10, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:
@{ NSFontAttributeName : [UIFont fontWithName:@"B Yekan" size:18.0f]} context:nil];
CGFloat rowHeight = ceilf(boundingRect.size.height);
NSLog(@"Height = %f for '%@'", rowHeight, displayString);
return 54 + rowHeight + 2 * 10; // Expanded height
}
return 92; // Normal height
}
return 92; // Normal height
}
所以,當我點擊一個細胞,它擴展了基於我的標籤文字字體和大小,
但現在我想說明標籤的全文,我知道我必須設置label.numberofline = 0 didSelectRowAtIndexPath,但它不起作用。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MsgCell";
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier];
}
UILabel *nameLabel = (UILabel *)[cell viewWithTag:100];
nameLabel.numberOfLines =0;
[nameLabel sizeToFit];
[nameLabel setLineBreakMode:NSLineBreakByWordWrapping];
[self.tableView beginUpdates];
[self.tableView endUpdates];
}
有幫助嗎?
你不應該[[tableView indexPathsForSelectedRows] indexOfObject:indexPath],因爲indexPath是一個新創建的對象,可能不在selectedIndexPath數組中。 – santhu