如何在自定义UITableViewCell中增加Label的高度

时间:2012-12-06 20:44:00

标签: iphone uitableview

我创建了一个自定义的UITableViewCell,我从xib加载,所以现在文本可能是动态的,所以我希望UILabel的高度存在于Custom UITableViewCell动态,

自定义UITableViewCell的代码是

    #import <UIKit/UIKit.h>

   @interface NarrativeCell : UITableViewCell
   @property(nonatomic,retain) IBOutlet UILabel *noteTitle;
   @property(nonatomic,retain) IBOutlet UILabel *noteDate;
   @property(nonatomic,retain) IBOutlet UILabel *noteDesc;
   @property(nonatomic,retain) IBOutlet UIImageView *sideImage;
   @property(nonatomic,retain) IBOutlet UIButton *imageButton;
   @property(nonatomic,retain) IBOutlet UIButton *audioStartButton; 
   @property(nonatomic,retain) IBOutlet UIButton *audioStopButton;

   @end

这是代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

      static NSString *CellIdentifier = @"NarrativeCell";


    NarrativeCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil){
    NSLog(@"New Cell Made");

    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"NarrativeCell" owner:nil options:nil];

    for(id currentObject in topLevelObjects)
    {
        if([currentObject isKindOfClass:[NarrativeCell class]])
        {
            cell = (NarrativeCell *)currentObject;
            break;
        }
    }
}
Narratives *n=(Narratives *)[tableArray objectAtIndex:indexPath.row];

CGRect newFrame = cell.noteDesc.frame;


NSLog(@"old %f",newFrame.size.height);
newFrame.size.height = expectedLabelSize.height;
//yourLabel.frame = newFrame;
NSLog(@"new %f",newFrame.size.height);
 newFrame.size.height = expectedLabelSize.height;

[cell.noteDesc setFrame:newFrame];
[cell.noteDesc setNumberOfLines:0];

[cell.noteDesc setText:n.cfcnl_note];

return cell;

}

但不幸的是我无法调整

的高度
             [cell.noteDesc setFrame:newFrame];

我认为因为它是从nib文件加载的,请帮助我如何动态更改UILabel当前自定义UITableViewCell(在nib中创建)的高度。

/////////修改

在这里看到旧的输出                   老21.000000                   新42.000000

1 个答案:

答案 0 :(得分:0)

看起来您的单元格小于文本所需的单元格。因此,您需要使用heightForRowAtIndexpath方法找到正确的单元格高度。如果你在单元格内有足够的空间用于调整大小,你应该向我们展示你的XIB子视图层次结构,看起来你做错了(一些超级视图剪辑来限制你的标签)。

P.S。无论如何,这不是因为您正在使用界面构建器。