【问题标题】: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 的顶部空间”

【问题讨论】:

    标签: ios swift uitableview autolayout constraints


    【解决方案1】:

    您正在更改框架大小而不是高度约束常量。您应该连接高度约束(IBOutlet)并更改高度,更改后调用self.view.layoutIfNeeded()

    这里是 example 的动画约束。

    【讨论】:

    • 我应该将哪个高度限制连接到 ViewController?我应该将 TableView2 的“顶部空间约束连接到 TableView1”并手动添加差异吗?我对你的约束位有点困惑。我想要的只是 TableView2 保持对 TableView1 的约束,即使 TableView1 的高度发生变化。我觉得你误会了我。 (让我澄清一下我的问题。我在顶部有 TV1,在底部有 TV2;TV2 与 TV1 的顶部间距为 10。我希望 TV2 在 TV1 的高度变化时保持其约束
    • 没关系,只需连接tv1高度约束,并将其更改为所需值,然后tv2顶部约束将自动更改...只是不要忘记在更改高度值后调用layoutIfNeeded() .您在 tv1 上设置了高度限制?
    猜你喜欢
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2019-07-01
    • 2013-12-25
    相关资源
    最近更新 更多