在视图期间更改后重新排列自动布局
Posted
技术标签:
【中文标题】在视图期间更改后重新排列自动布局【英文标题】:Rearrange autoLayout after changes during view 【发布时间】:2016-06-06 22:25:34 【问题描述】:我在 Storyboard 中有 2 个 TableViews (一个在顶部,另一个在底部),并且自动布局已设置并正常工作。对于 TableViews,我正在从数据库中检索数据,因此它不会立即显示 TableView 内容。检索数据完成后,在numberOfRowsInSection
我根据计数改变TableView的高度。
if tableView == self.TableView1
count = tableView1Content.count
if count != nil
let cellSize = 100
switch count!
case 0:
tableView.frame.size.height = CGFloat(0)
break;
case 1:
tableView.frame.size.height = CGFloat(cellSize)
case 2:
tableView.frame.size.height = CGFloat(cellSize * 2)
default:
print("D")
break;
所以我可以改变 TableView1 的高度。 TableView2 的“到 TableView1 的顶部空间”为 10,但由于在视图加载后发生高度变化,TableView2 不会自行调整以保持“到 TableView1 的顶部空间”
【问题讨论】:
【参考方案1】:您正在更改框架大小而不是高度约束常量。您应该连接高度约束(IBOutlet)并更改高度,更改后调用self.view.layoutIfNeeded()
这里是 example 的动画约束。
【讨论】:
我应该将哪个高度限制连接到 ViewController?我应该将 TableView2 的“顶部空间约束连接到 TableView1”并手动添加差异吗?我对你的约束位有点困惑。我想要的只是 TableView2 保持对 TableView1 的约束,即使 TableView1 的高度发生变化。我觉得你误会了我。 (让我澄清一下我的问题。我在顶部有 TV1,在底部有 TV2;TV2 与 TV1 的顶部间距为 10。我希望 TV2 在 TV1 的高度变化时保持其约束 没关系,只需连接tv1高度约束,并将其更改为所需值,然后tv2顶部约束将自动更改...只是不要忘记在更改高度值后调用layoutIfNeeded()
.您在 tv1 上设置了高度限制?以上是关于在视图期间更改后重新排列自动布局的主要内容,如果未能解决你的问题,请参考以下文章