3 回答
TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
這是一種更簡(jiǎn)單的方法,它適用于我:
在你的cellForRowAtIndexPath:功能里面。第一次創(chuàng)建單元格時(shí):
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 0;
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
}
您會(huì)注意到我將標(biāo)簽的行數(shù)設(shè)置為0.這使得它可以根據(jù)需要使用盡可能多的行。
下一部分是指定你的大小UITableViewCell,所以在你的heightForRowAtIndexPath函數(shù)中這樣做:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellText = @"Go get some text for your cell.";
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
return labelSize.height + 20;
}
我在返回的單元格高度上添加了20,因?yàn)槲蚁矚g在文本周圍添加一點(diǎn)緩沖區(qū)。
TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
? ? cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
? ? cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
? ? cell.textLabel.numberOfLines = 0;
? ? cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
? ? NSString *cellText = @"Go get some text for your cell.";
? ? UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
? ? NSAttributedString *attributedText =
? ? ? ? [[NSAttributedString alloc]
? ? ? ? ? ? initWithString:cellText
? ? ? ? ? ? attributes:@
? ? ? ? ? ? {
? ? ? ? ? ? ? ? NSFontAttributeName: cellFont
? ? ? ? ? ? }];
? ? CGRect rect = [attributedText boundingRectWithSize:CGSizeMake(tableView.bounds.size.width, CGFLOAT_MAX)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?options:NSStringDrawingUsesLineFragmentOrigin
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?context:nil];
? ? return rect.size.height + 20;
}
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
當(dāng)我遇到同樣的問題時(shí),記錄我的經(jīng)驗(yàn)的簡(jiǎn)短評(píng)論/答案。盡管使用了代碼示例,但是表視圖單元格高度正在調(diào)整,但是單元格內(nèi)的標(biāo)簽仍未正確調(diào)整 - 解決方案是我從自定義NIB文件加載我的單元格,這在調(diào)整后的單元格高度后發(fā)生。
我在NIB文件中設(shè)置了不包裝文本的設(shè)置,標(biāo)簽只有1行; NIB文件設(shè)置覆蓋了我在代碼中調(diào)整的設(shè)置。
我接受的教訓(xùn)是確保始終牢記物體在每個(gè)時(shí)間點(diǎn)的狀態(tài) - 它們可能尚未創(chuàng)建!......有人下線了。
- 3 回答
- 0 關(guān)注
- 666 瀏覽
添加回答
舉報(bào)
