我希望这个ios - 使用AutoLayout/UIScrollView设置约束时了解UIView高度-LMLPHP能有帮助,但我正试图用一个概念来概括我的想法。我有一个UIScrollView,添加到ViewController中的self.view中,它的顶边、前边、后边和底边固定在self.view的顶边、后边和底边上。这是viewA
我有第二个UIView,viewB,它有几个子视图。这些子视图中的每一个子视图都通过AutoLayout添加到viewB中,为简洁起见,这些子视图中的每一个子视图都有一个设置为值的高度约束。
我想添加viewBviewA,使viewA能够垂直滚动。因为viewB无疑比viewA高,所以它应该滚动。
我是这样加的;

viewB.topAnchor.constraint(equalTo: viewA.topAnchor).isActive = true
viewB.leadingAnchor.constraint(equalTo: viewA.leadingAnchor).isActive = true
viewB.trailingAnchor.cosntraint(equalTo: viewA.trailingAnchor).isActive = true

这就是我被困的地方。如果我设置了一个底部锚(viewB),那么我的UIScrollView不会滚动,并且viewB.bottomAnchor.constraint(equalTo: viewA.bottomAnchor).isActive = true明显被切断。
如果我为viewB设置了一个随机高度(使用viewB),那么UIScrollView会滚动,尽管这个常量太高了。
我不知道如何获得viewB.heightAnchor.constraint(equalToConstant: 2000.0).isActive = true的合适高度。因为viewB确实有一个实际的高度(使用硬编码的子视图),所以我认为AutoLayout没有理由不能计算viewB的高度,即使没有设置底部锚定,但也不能找出正确的代码。

最佳答案

1-您需要将viewB leading、trailing、top和bottom挂接到viewA,再加上viewB的宽度设置为=主vc视图的宽度
2-视图B中的所有约束都应该从上到下正确挂钩
3-不要重复使用.isActive = true考虑将所有约束包装在NSLayoutConstraint.activate([<#ConstraintsHere#>])
4-可能适合你目前的方法aUITableView更适合

关于ios - 使用AutoLayout/UIScrollView设置约束时了解UIView高度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56307261/

10-11 14:37