ios:UIPageControl的垂直位置不明确

时间:2018-11-04 23:47:02

标签: ios swift autolayout ambiguity

我有一个UIPageControl作为UICollectionView的子视图。以下是UICollectionView的约束:

let collectionViewConstraints = [
        collectionView.topAnchor.constraint(equalTo: view.topAnchor),
        collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
        collectionView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.65),
        collectionView.widthAnchor.constraint(equalTo: view.widthAnchor)
    ]

collectionView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate(collectionViewConstraints)

UIPageControl的约束是:

collectionView.addSubview(pageControl)
let pageControlConstraints = [
        pageControl.centerXAnchor.constraint(equalTo: view.centerXAnchor),
        pageControl.bottomAnchor.constraint(equalTo: collectionView.bottomAnchor, constant: 100)
    ]

pageControl.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate(pageControlConstraints)

由于pageControl具有intrinsicContentSize,因此我仅指定其x和y位置。但是,对于pageControl的垂直位置,我遇到了一个模棱两可的布局错误。

enter image description here

如第一个屏幕截图所示,pageControl似乎没有固定在collectionView的底部。调试视图层次结构时,似乎pageControl的底部边缘相对于collectionView的底部边缘布置,但是两者之间的距离似乎比我指定的要大得多(100) 。

enter image description here enter image description here

我不确定是什么原因导致这种歧义的布局,因为我相信我已经为pageControl指定了所有必要的约束。我将不胜感激。

注意:如果我将pageControl约束为collectionView.topAnchor而不是collectionView.bottomAnchor,则模糊性就会消失。

1 个答案:

答案 0 :(得分:0)

尝试将UIPageControl添加到viewController的{​​{1}}。

替换

view

使用

collectionView.addSubview(pageControl)