UILabel
內部的UITableViewCell
。在單元格水龍頭上,高度展開,並出現第二個不同數量的數據。帶有 - [sizeWithFont:constrainedToSize:lineBreakMode]的UILabel正在切斷
問題是,如果換行,sizeWithFont:constrainedToSize:lineBreakMode:
沒有返回正確的高度並切斷底線。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
labelExpanded = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
labelExpanded.font = [UIFont boldSystemFontOfSize:11];
labelExpanded.textAlignment = UITextAlignmentLeft;
labelExpanded.lineBreakMode = UILineBreakModeWordWrap;
labelExpanded.numberOfLines = 0;
[cell.contentView addSubview:labelExpanded];
CGSize constraint = CGSizeMake(300, 20000);
CGSize size = [expandedDetails sizeWithFont:[UIFont boldSystemFontOfSize:11] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
[labelExpanded setText:expandedDetails];
[labelExpanded setFrame:CGRectMake(16, 30, 248, size.height)];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(// Row is Expanded)
{
CGSize constraint = CGSizeMake(300, 20000);
CGSize size = [sameTextAsLabel sizeWithFont:[UIFont boldSystemFontOfSize:11] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
// I found +8 to height added nice padding
CGFloat height = size.height + 8;
}
else // Row is not expanded
return 30;
}
相同的文本被饋送到兩個,它由具有多個新的行\n
字符串。如果該行比寬度長,則自動換行功能會執行其作業,但在計算其動態高度時,將無法包含被包裝的行。
如果我添加任何值到[labelExpanded setFrame:height]
如[size.height + 30]
我的包裝線顯示。但是,如果該行未被包裝,則會添加不必要的空白。
我一直沒能在網上找到這個解決方案。
* facepalm,去睡覺* – 2011-03-26 00:44:44
@MikeGabriel:不要太擔心,我們都做到了。 – Anomie 2011-03-26 00:56:30