我有几个子视图

    view.addSubview(collectionView)
    view.addSubview(pageControl)
    view.addSubview((tabBarController?.tabBar)!)
    view.addSubview(skipButton)
    view.addSubview(nextButton)

我试着用layoutuanchor来布局。(此时,我将pageControl.bottomAnchor锚定到view.bottomAnchor)
   nextButton.anchorWithConstantsToTop(view.topAnchor, left: nil, bottom: nil, right:
        view.rightAnchor, topConstant: 16, leftConstant: 0, bottomConstant: 0, rightConstant: 0)
    nextButtonTopAnchor = nextButton.topAnchor.constraint(equalTo: view.topAnchor, constant: 0)
    nextButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
    nextButton.widthAnchor.constraint(equalToConstant: 60).isActive = true
    skipButton.anchorWithConstantsToTop(view.topAnchor, left: view.leftAnchor, bottom: nil, right: nil, topConstant: 16, leftConstant: 0, bottomConstant: 0, rightConstant: 0)
    skipButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
    skipButton.widthAnchor.constraint(equalToConstant: 60).isActive = true
    pageControl.anchorWithConstantsToTop(nil, left: view.leftAnchor, bottom: view.bottomAnchor, right: view.rightAnchor, topConstant: 0, leftConstant: 28, bottomConstant: 0, rightConstant: 30)

所以它工作得很好,当我在适当的地方旋转设备pageControl夹具时ios - 与tabBar.topAnchor的怪异布局-LMLPHP
但如果试图锚定pageControl.bottomAnchor=tabBarController?.tabBar.topAnchor而不是view.bottomAnchor,然后在纵向方向上一切正常,但当我旋转设备时,会发生一些令人恼火的事情:pageControl上升ios - 与tabBar.topAnchor的怪异布局-LMLPHP
而且当我从横向到纵向
保持在上部位置ios - 与tabBar.topAnchor的怪异布局-LMLPHP
我想问题出在pageControl.bottomAnchor=tabBarController?.tabBar.topfanchor字符串,但我能得到为什么?在横向方向仍然保留tabBar,而pageControl仍然必须将其锚定到tabBar的topAnchor。拜托也许有人知道这种行为是怎么回事?

最佳答案

问题就在这一行:
view.addSubview((tabBarController?.tabBar)!)
你不应该那样做。请删除它,然后在将当前视图控制器添加到UITabBarController后设置约束。第一次执行viewWillAppear将是这方面的一个候选示例。
如果pageControl是以编程方式创建的,则还应将其translatesAutoresizingMaskIntoConstraints属性设置为false(如注释中所指出的)。如果控件是在情节提要中创建的,则不需要执行此步骤。

10-08 12:14