我有tableview
并且加载数据宽度为json数组。
我正在做的是,我将两个UILabel
放入每个表视图单元格中。
这是有效的[label sizeToFit];
。
我现在的问题是设置保存这两个标签的单元格的大小。我试着设置[cell sizeToFit];
但这不起作用。
有谁能帮我解决这个问题?
这是代码:
NSString * titel = [[json_Array objectAtIndex:indexPath.row ] objectForKey:@"maintitel"];
NSString * datum = [[json_Array objectAtIndex:indexPath.row] objectForKey:@"datum"];
// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-mm-dd"];
NSDate *date = [dateFormat dateFromString:datum];
// Convert date object to desired output format
[dateFormat setDateFormat:@"dd.mm.yy"];
NSString * dateStr = [dateFormat stringFromDate:date];
NSString * datum1 = [dateStr description];
UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(0, 0, 80, 50)];
label.text = datum1;
UILabel *label1 = [[UILabel alloc] initWithFrame: CGRectMake(80, 0, 245, 50)];
label1.text = titel;
label.numberOfLines = 0;
label.lineBreakMode = UILineBreakModeWordWrap;
label.userInteractionEnabled = NO;
label1.numberOfLines = 0;
label1.lineBreakMode = UILineBreakModeWordWrap;
label1.userInteractionEnabled = NO;
[label sizeToFit];
[label1 sizeToFit];
[cell.contentView addSubview:label];
[cell.contentView addSubview:label1];
我的第二个问题是因为我在iOS开发中几乎是新手,但已经完成了一些Android项目,这是让屏幕看起来像我想要的最佳方法吗?
答案 0 :(得分:0)
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
NSString * datum = [[json_Array objectAtIndex:indexPath.row] objectForKey:@"datum"];
CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);
CGSize size = [datum sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
CGFloat height = MAX(size.height, 77.0f);
return height + (CELL_CONTENT_MARGIN * 2);
}
考虑一个字符串,它具有最大高度,然后适合单元格的高度。我认为根据您的要求实现的基准字符串
答案 1 :(得分:0)
我是从我的同事(ANIRUDH)那里得到的并且工作正常,可能会有所帮助:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
//Calculating height on base of length of text
UIFont *font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
NSAttributedString *attributedText =
[[NSAttributedString alloc]
initWithString:YOURSTRING //[NSString string withformat:@"\n Yourstring"] \n for: number of lines require for static label in cell
attributes:@
{
NSFontAttributeName: font
}];
CGRect rect = [attributedText boundingRectWithSize:(CGSize){CELL_CONTENT_WIDTH, CGFLOAT_MAX}
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
CGSize size = rect.size;
// NSString *height = [NSString stringWithFormat: @"%.2f", ceilf(size.height)+22];
return (ceilf(size.height)+22)*0.6; //change 0.6 to 0.9 according to the difference in required and extra calculted height, it works for me every time
}
并在
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.....
label.numberOfLines = 0;
label.text = YOURTEXT;
[label sizeToFit];
....
}
但我建议您使用http://www.cimgf.com/2009/09/23/uitableviewcell-dynamic-height/