我是UIKit的新手。我在父视图中有一个UICollectionView
,它可以在这样的约束下正常工作
...
addSubview(collectionView)
collectionView.translatesAutoresizingMaskIntoConstraints = false
collectionView.topAnchor.constraint(equalTo: topAnchor).isActive = true
collectionView.rightAnchor.constraint(equalTo: rightAnchor).isActive = true
collectionView.leftAnchor.constraint(equalTo: leftAnchor).isActive = true
collectionView.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true
...
但我需要的是将这个UICollectionView
绑定到父视图的底部(目前它显示在中心(。
为了做到这一点,我删除了顶部约束
...
addSubview(collectionView)
collectionView.translatesAutoresizingMaskIntoConstraints = false
collectionView.rightAnchor.constraint(equalTo: rightAnchor).isActive = true
collectionView.leftAnchor.constraint(equalTo: leftAnchor).isActive = true
collectionView.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true
...
但画面却消失了。然后我尝试添加宽度和高度
...
collectionView.widthAnchor.constraint(equalToConstant: 80).isActive = true
collectionView.heightAnchor.constraint(equalToConstant: 80).isActive = true
...
但这也于事无补。
我还试图添加边距,以便将UICollectionView
移到底部,但也没有成功。
我在这里错过了什么?
编辑
底线是,我需要将我的收藏视图绑定到视图的底部。
我做的最后一次尝试是
...
collectionView.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor).isActive = true
collectionView.trailingAnchor.constraint(equalTo: layoutMarginsGuide.trailingAnchor).isActive = true
collectionView.bottomAnchor.constraint(equalTo: layoutMarginsGuide.bottomAnchor).isActive = true
collectionView.heightAnchor.constraint(equalToConstant: 200).isActive = true
...
但是视图占用的空间比我需要的要多,所以我试着把数字降低到150
...
collectionView.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor).isActive = true
collectionView.trailingAnchor.constraint(equalTo: layoutMarginsGuide.trailingAnchor).isActive = true
collectionView.bottomAnchor.constraint(equalTo: layoutMarginsGuide.bottomAnchor).isActive = true
collectionView.heightAnchor.constraint(equalToConstant: 150).isActive = true
...
景色消失了。。。
发生了一些奇怪的事情:(
看起来它唯一的工作方式是-
...
collectionView.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor).isActive = true
collectionView.topAnchor.constraint(equalTo: layoutMarginsGuide.topAnchor, constant: 75).isActive = true
collectionView.trailingAnchor.constraint(equalTo: layoutMarginsGuide.trailingAnchor).isActive = true
collectionView.bottomAnchor.constraint(equalTo: layoutMarginsGuide.bottomAnchor).isActive = true
collectionView.heightAnchor.constraint(equalTo: layoutMarginsGuide.heightAnchor).isActive = true
...
但我认为这不是合适的配置。
视图有两个维度。必须指定其垂直和水平位置和大小。
当您指定了与已知超视图相关的顶部、左侧、底部和右侧时,就是在执行此操作。
当您取消顶部约束时,您的视图没有高度,因此它消失了。
添加高度限制是很好的,尽管80的高度非常小。但您仍然需要一个顶部或底部约束。
此外,不能在添加宽度约束的同时保留左右约束,因为它们相互矛盾。
基本上,你只需要下定决心,说出你想要的,不要模棱两可或自相矛盾。