我有一个页面,其中必须有 2 个使用 Autolayout 的 UITableView
。他们将各自占据大约一半的屏幕。我的问题是页面的逻辑要求不时隐藏其中之一。在那种情况下,我需要展开另一个以占据整个屏幕。
我的逻辑是:
在打开页面时,我只会看到第一个 UITableView
,里面有一个列表。当我点击一行时,我将不得不在第一个下方显示第二个 UITableView
,因此会将屏幕分成 50-50(最好计算第二个的适当高度,但 50-50 是可以的)。
在第二个内部进行一些操作后,它将被设置为隐藏,第一个必须再次展开到整个屏幕。
我的问题是如何做到这一点?
我想我必须添加高度限制,但我必须动态删除和添加它们,或者我必须做其他事情?
附言我想当我同时显示两者时,如果第一个的内容大于可见区域,它将支持滚动吗?
选择前查看(只有一个 UITableView
):
---------------------
| * Row 1 |
| * Row 2 |
| * Row 3 |
| * Row 4 |
| * Row 5 |
| |
| |
| |
---------------------
选择前查看(UITableView
都可见):
---------------------
| * Row 1 |
| * Row 2 |
| * Row 3 (SELECTED)|
---------------------
| x row 1 |
| x row 2 |
| x row 3 |
| x row 4 |
---------------------
最佳答案
您应该执行以下操作:
- 添加表格 View 的高度限制
- 在定义为 IBOutlet
的 ViewController
中声明两个 NSLayoutConstraint
属性
- 将变量连接到 Interface Builder 中的约束。
然后在您的 ViewController 中,您可以调整 TableView 的高度,修改 NSLayoutConstraint 属性的常量。例如
self.heightOfTheFirstTableView.constant = self.view.frame.size.height/2;
self.heightOfTheSecondTableView.constant = self.view.frame.size.height/2;
[self.view layoutIfNeeded];
对于你的问题:
P.S. I suppose that when I show both if the content of the first is larger that visible area it will support scrolling?
是的,它将支持滚动,但前提是用户在 tableView 框架内滚动
关于ios - 使用自动布局时如何从代码更改 UITableView 的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35575573/