TableView高度无法在IOS中resize

我正在尝试做这样的事情,我有一个UIViewControler 。 所以在我的故事板,我拖放一个UITableView的视图。 我应该在该表视图中显示一些自定义的行。 但我想dynamic地改变该表视图的高度(根据表视图内的行数)。

我尝试像下面的代码,但没有任何工作到目前为止。

 CGRect tvframe = [tableView frame]; [tableView setFrame:CGRectMake(tvframe.origin.x, tvframe.origin.y, tvframe.size.width, tvframe.size.height + 20)]; 

我也试过这个

  CGRect frame = self.tableView.frame; frame.size = self.tableView.contentSize; self.tableView.frame = frame; 

但没有为我工作..请有人告诉我,我该怎么做。

谢谢。

在Autolayout中,如果你想改变框架然后尝试约束( NSLayoutConstraint IBOutlet )。

在这里输入图像说明

通过以下方式设置约束出口并更改constant数值:

 self.sampleConstraint.constant = 20 self.view.layoutIfNeeded() 

我希望这个答案可以帮助你…

对于dynamicTableviewCell高度

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *OptName_length = @" Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam"; NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:17.0]}; CGRect rect = [OptName_length boundingRectWithSize:CGSizeMake(tableView.bounds.size.width-150.0, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil]; CGSize requiredSize = rect.size; return requiredSize.height +5.0f; } 

值150.0是单元格中的标签或textview的静态宽度。 或标签前或后的其他元素的宽度或水平空间值。 将单元格中的textview的前导,尾部,顶部和底部约束设置为不设置静态高度

将tableview高度调整到no。 细胞…

 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:YES]; [self adjustHeightOfTableview]; } - (void)adjustHeightOfTableview { CGFloat height = tblMainMenu.contentSize.height; CGFloat maxHeight = tblMainMenu.superview.frame.size.height - tblMainMenu.frame.origin.y; // if the height of the content is greater than the maxHeight of // total space on the screen, limit the height to the size of the // superview. if (height > maxHeight) height = maxHeight; // now set the height constraint accordingly self.tableViewHeightConstraint.constant = height; [UIView animateWithDuration:0.1 animations:^{ [self.view setNeedsUpdateConstraints]; }]; } 

Tableview自动布局约束图像

 CGRect frame = self.tableView.frame; frame.size.height = resourceArray.count*row_height; self.tableView.frame = frame; 

只要使用这个

 tableView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); 

尝试下面的代码,

 CGFloat height = self.tableView.rowHeight; height *= [myArray count]; CGRect tableViewFrame = self.tableView.frame; tableViewFrame.size.height = height; self.tableView.frame = tableViewFrame; 

尝试这个 :

  [UIView animateWithDuration:0.1 animations:^{ CGRect frame = self.tableView.frame; frame.size.height = 100.0; // expected height self.tableView.frame = frame; }]; 

我希望这有助于..

如果你的行数是固定的比你可以做这些没有约束dynamic..

在你的项目.h文件中

 UITableView *tbl; int numOfRows; float tableViewheight,tableViewWidth,heightForRow; 

在您的项目.m文件中

 - (void)viewDidLoad { [super viewDidLoad]; heightForRow=70; numOfRows=2; tableViewheight=heightForRow*numOfRows; tableViewWidth=self.view.frame.size.width; tbl=[[UITableView alloc]initWithFrame:CGRectMake(0, 64, tableViewWidth, tableViewheight)]; [tbl setDelegate:self]; [tbl setDataSource:self]; [self.view addSubview:tbl]; } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return heightForRow; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return numOfRows; }