Ios 当以编程方式添加内容时,如何增加表格单元格高度?

Ios 当以编程方式添加内容时,如何增加表格单元格高度?,ios,objective-c,xcode,uitableview,autolayout,Ios,Objective C,Xcode,Uitableview,Autolayout,我正在开发一个应用程序。我有一些来自服务器的数据 现在我不知道行的数据计数。我只知道字段的名称 我想在UITableViewCell中显示这些数据 我有一个自定义的表格单元格。我在里面取了一个ContentView。 我设置了以下约束: - Leading - Trailing - Top - Bottom 在我的ViewController的DidLoad方法中,我有以下代码: UINib *nib = [UINib nibWithNibN

我正在开发一个应用程序。我有一些来自服务器的数据

现在我不知道行的数据计数。我只知道字段的名称

我想在
UITableViewCell
中显示这些数据

我有一个自定义的
表格单元格
。我在里面取了一个
ContentView
。 我设置了以下约束:

     - Leading
     - Trailing 
     - Top
     - Bottom
在我的
ViewController的
DidLoad方法中,我有以下代码:

    UINib *nib = [UINib nibWithNibName:cellName bundle:nil];
   [[self mTableView] registerNib:nib forCellReuseIdentifier:cellName];


     self.mTableView.rowHeight = UITableViewAutomaticDimension;
    self.mTableView.estimatedRowHeight = 100.0;
我正在这样创建
UILabel

      - (void)awakeFromNib {
[super awakeFromNib];


CGFloat ypos = 0;

for(int i=0;i<6;i++)
{
    UILabel *lbl  = [[UILabel alloc]init];
    lbl.backgroundColor= [UIColor redColor];
    lbl.frame = CGRectMake(0,ypos,30,10);

    [self addSubview:lbl];
    ypos += 16;
}

[self setNeedsLayout];
[self layoutIfNeeded];

// Initialization code
}
-(void)从NIB唤醒{
[超级awakeFromNib];
cgpos=0;

对于(int i=0;i到目前为止,您做得不错。但是不要忘记使用tableView的委托/数据源-cellForRowHeight


此外,正如Lion所提到的,您需要向标签添加约束。如果您以编程方式添加标签,那么也可以以编程方式执行自动布局。

contentView在哪里(我希望您是指添加到单元格内容视图中的UIView子类)约束。?您需要为标签设置约束,并将numbersOfLine设置为零。这将自动增加标签高度。@vikash1307 Bro我正在通过编程创建它们,然后您也可以执行Bro。请检查我的回答:这段代码的作用是什么?sizeWithFont:现在已被弃用。这是我最后的希望。。我不想让代码太庞大,这是我的梦想这就是为什么我在寻找更好的方法。谢谢你的解决方案
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSDictionary *dict1 = (NSDictionary*)[array objectAtIndex:indexPath.row];
    NSString *cellText = [dict1 valueForKey:@"test"];
    UIFont *cellFont = [UIFont fontWithName:FONT_NAME_GOTHAM_4 size:11.0];
    CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
    CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];

    return labelSize.height + 80;
}