更新UITableView高度变化时其他元素的约束
我有一个UITableView
其中我在自动布局中将高度定义为200。基于此,我正在布置其他元素,如UITextField
等。之后,在运行时,我从服务器获取数据并填充到UITableView
,因此我根据其内容大小更新了UITableView
的高度。下面的代码我使用它更新UITableView高度变化时其他元素的约束
self.myTableView.frame = CGRectMake(0 , 0, self.myTableView.frame.width, self.myTableView.contentSize.height)
但由于这一点,所有的下面放置UITableView
的元素仍然出现在他们,而在自动布局布局是相同的位置。手段变化的高度UITableView
对他们没有任何影响。下图描述了这个问题。有什么可能的解决方案呢?
在这里你可以看到,文本字段越来越在运行时间上重叠的tableview。我使用斯威夫特2在Xcode 7.2
如果您对表视图和其他视图都有所需的约束条件。
不要改变TableView的框架来改变它的高度。 相反,创建您的tablview的高度约束的IBOutlet。
例如说IBOutlet的名字是constraintTableViewHeight, 那么你可以很容易地高。
constraintTableViewHeight.constant = yourNewHeightValue
//update all constraint of your view and its inner view
self.view.layoutIfNeeded();
推荐图像为您的身高约束创建IBOutlet。
取NSLayoutConstraint
IBOutlet中进行的tableView高度和设置,如果你已经给出了实现代码如下约束它不工作的数值未设置的tableview框架,以改变的tableview HIGHT不断
一样,如果你以tblHeight为tableView高度,然后设置tblHeight.constant = self.myTableView.contentSize.height
你必须为你的tableview高度约束创建出口连接。
@IBOutlet weak var heightContraint:NSLayoutConstraint!
,当你想改变表格视图的高度,你可以改变约束值筛选
heightContraint.constant = newHeightValue self.view.layoutIfNeeded();
当表视图的大小更改时,是否在更新接收数据后的约束? –
是的,我收到并重新加载数据后更改'UITableView'的高度 – Abhi