2016-01-13 86 views
3

我有一个UITableView其中我在自动布局中将高度定义为200。基于此,我正在布置其他元素,如UITextField等。之后,在运行时,我从服务器获取数据并填充到UITableView,因此我根据其内容大小更新了UITableView的高度。下面的代码我使用它更新UITableView高度变化时其他元素的约束

self.myTableView.frame = CGRectMake(0 , 0, self.myTableView.frame.width, self.myTableView.contentSize.height) 

但由于这一点,所有的下面放置UITableView的元素仍然出现在他们,而在自动布局布局是相同的位置。手段变化的高度UITableView对他们没有任何影响。下图描述了这个问题。有什么可能的解决方案呢?

enter image description here

在这里你可以看到,文本字段越来越在运行时间上重叠的tableview。我使用斯威夫特2在Xcode 7.2

+0

当表视图的大小更改时,是否在更新接收数据后的约束? –

+0

是的,我收到并重新加载数据后更改'UITableView'的高度 – Abhi

回答

6

如果您对表视图和其他视图都有所需的约束条件。

不要改变TableView的框架来改变它的高度。 相反,创建您的tablview的高度约束的IBOutlet。

例如说IBOutlet的名字是constraintTableViewHeight, 那么你可以很容易地高。

constraintTableViewHeight.constant = yourNewHeightValue 
//update all constraint of your view and its inner view 
self.view.layoutIfNeeded(); 

推荐图像为您的身高约束创建IBOutlet。

enter image description here

+0

对不起,我有限的知识,但如何创建高度约束的IBOutlet? – Abhi

+0

您之前是否创建过按钮或标签的IBOutlet? –

+0

检查编辑答案创建IBOutlet –

1

NSLayoutConstraint IBOutlet中进行的tableView高度和设置,如果你已经给出了实现代码如下约束它不工作的数值未设置的tableview框架,以改变的tableview HIGHT不断

一样,如果你以tblHeight为tableView高度,然后设置tblHeight.constant = self.myTableView.contentSize.height

0

你必须为你的tableview高度约束创建出口连接。

@IBOutlet weak var heightContraint:NSLayoutConstraint!

,当你想改变表格视图的高度,你可以改变约束值筛选

heightContraint.constant = newHeightValue self.view.layoutIfNeeded();

相关问题