具有多个tableviews的iOS 6 AutoLayout全部dynamic高度

好吧,我卡住了。 在我的应用程序中,我有一个产品视图。 在这个视图中,滚动视图中有两个嵌套的表视图。 第一个tableview只有一个单元格,并保存静态文本。 这个文本的长度是基于你select哪一个基于dynamic的。 第二个tableview由多个单元格组成,这个单元格基于多less个子产品链接到该产品。 所以在iOS 5中,根据文本在第一个表格视图中的大小,dynamic移动每个表格视图的框架非常容易。 我可以总结所有表视图的高度,这将是滚动视图的高度。 问题是当我打开汽车布局时,事情变得很严重。 从我的理解滚动视图已经改变。 我们不能使用滚动视图的框架或内容大小。 所以我做的第一件事就是改变了一切。 我做了以下。

CGSize descriptionSize = [descriptionDetail sizeWithFont: [UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(320, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping]; self.theScroller.translatesAutoresizingMaskIntoConstraints= NO; [self.theScroller setContentInset:UIEdgeInsetsMake(0, 0, (descriptionSize.height+ (43 * [Solution count])), 0)]; 

现在这上面的工作完美无瑕。 滚动视图很好地滚动,并且在自动布局上是正确的高度。

现在我坚持的部分是,如何根据描述的长度或第二个表视图中有多less个单元格来dynamic移动这两个表格视图? 表格视图的框架似乎对它们所在的位置没有任何影响。 我试着用这个限制来搞乱,但似乎没有任何地方。 任何帮助将不胜感激。 谢谢

视图层次结构的图片

在这里输入图像说明

我可以通过使用单个UITableView来完成所有这些工作。

你的上面的UIView与UIImageView是它的tableHeaderView,你的第一个“单行UITableView”是UITableView中的第一个部分,你的表格视图与dynamic内容在UITableView的更多部分。

我相信你遇到的问题是滚动视图没有固有的大小。 使用自动布局,他们根据兄弟/父亲的约束得到他们的大小,然后滚动任何不适合的内部内容。 由于表视图是花哨的滚动视图,所以您需要告诉它们有多大,并根据内部内容手动更改它,而不是滚动或显示空白。

我不确定你的表格视图之间有什么关系,但是听起来好像第二个表格视图的顶边距离第一个表格视图的底边有一个固定的距离,这很容易做到自动布局select两个表格视图并固定垂直间距。 固定第一个滚动视图的高度,并在控制器中创build一个约束出口,然后将以下内容添加到控制器中:

 -(void) viewWillLayoutSubviews{ [self.firstTableView layoutIfNeeded]; self.firstTableViewHeightConstraint.constant = self.firstTableView.contentSize.height; } 

这将解决它,以便您的第一个表视图与其内容相同的高度,不会滚动。 Autolayout会负责移动你的第二个表格视图。