static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@""];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
//cell.backgroundView = [[[CustomCell alloc] init] autorelease];
cell.selectedBackgroundView = [[[CustomCell alloc] init] autorelease];
// At end of function, right before return cell:
cell.textLabel.backgroundColor = [UIColor clearColor];
// Configure the cell.
UILabel *myLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(-30, 3, 300, 22)];
UILabel *myLabel2 = [[UILabel alloc] initWithFrame:CGRectMake(10, 22, 310, 200)];
UILabel *myLabel3 = [[UILabel alloc] initWithFrame:CGRectMake(0, 170, 300, 20)];
Book *aBook = [appDelegate.books objectAtIndex:indexPath.row];
myLabel1.text=aBook.title;
myLabel2.text=aBook.description;
myLabel3.text=aBook.pubDate;
NSString *desc = aBook.description;
if ([desc isEqualToString:nil]) {
NSLog(@"nullll lll ");
}
//myLabel2.textAlignment=UITextAlignmentCenter;
myLabel2.numberOfLines=5;
myLabel2.textColor=[UIColor blueColor];
myLabel2.lineBreakMode=UILineBreakModeWordWrap;
myLabel2.font=[UIFont systemFontOfSize:14];
myLabel3.numberOfLines=1;
myLabel1.numberOfLines=1;
myLabel1.textColor=[UIColor redColor];
myLabel1.font=[UIFont systemFontOfSize:20];
myLabel1.shadowColor=[UIColor redColor];
myLabel1.backgroundColor=[UIColor grayColor];
[cell.contentView addSubview:myLabel1];
[cell.contentView addSubview:myLabel2];
[cell.contentView addSubview:myLabel3];
嗨伙计们!我有以下代码,我想从xml文件中显示这个。现在它的工作但静态行高。
如果xml文件没有数据,则将其保留为空白。所以我想根据我使用mylabel1,2,3.text 提供的数据来改变行高
答案 0 :(得分:2)
正如UITableViewDelegate协议中所指定的,您希望在委托中实现tableView:heightForRowAtIndexPath:
方法。在该方法中,您将获得indexPath
,因此您可以重复该行
Book *aBook = [appDelegate.books objectAtIndex:indexPath.row];
获得该书后,您可以检查其属性(看起来像title
,description
和pubDate
),然后将其添加到单元格中(稍后会执行) ),您将根据属性值返回计算的单元格高度。
答案 1 :(得分:1)
嗨有一种溶剂尝试NSString的方法。写这是单元格的高度
NSString *text1 = [arrOutline1 objectAtIndex:[indexPath row]];
CGSize constraint1 = CGSizeMake(CELL_CONTENT_WIDTH , 20000.0f);
CGSize size1 = [text1 sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint1 lineBreakMode:UILineBreakModeWordWrap];
CGFloat YPostion =MAX(size3.height, 44.0f);
cellHeight = cellHeight + YPostion + 20;;
return cellHeight ;
答案 2 :(得分:0)
如果我正确地理解了这个问题(如果我不这样做就道歉),那么:
下面是一个tableView的示例:heightForRowAtIndexPath方法,用于单个节表,根据显示的段落中的文本数量动态调整单元格行的高度。
- (CGFloat) tableView: tableView heightForRowAtIndexPath: indexPath;
{
CGFloat rowHeight = [self rowHeight:[[self paragraphs] objectAtIndex: [indexPath row]];
return (rowHeight + EI_CELL_MARGIN);
}
然后是tableView:cellForRowAtIndexPath:方法中的一个片段。
NSString* cellText = [[self paragraphs] objectAtIndex: [indexPath row];
[[cell paragraphController] setText: cellText];
[[cell paragraphController] adjustFrameToTextSize];
(因为它在这段代码中我为了方便我已经将UITableViewCell子类化了.'dessectionController'只是一个ViewController,其视图被添加到单元格的内容视图中.signingFrameToTextSize方法根据内容的大小重置视图帧显示。)