我希望这个能有帮助,但我正试图用一个概念来概括我的想法。我有一个UIScrollView,添加到ViewController中的self.view中,它的顶边、前边、后边和底边固定在self.view的顶边、后边和底边上。这是viewA
。
我有第二个UIView,viewB
,它有几个子视图。这些子视图中的每一个子视图都通过AutoLayout添加到viewB
中,为简洁起见,这些子视图中的每一个子视图都有一个设置为值的高度约束。
我想添加viewB
到viewA
,使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/