排队UIButton的CenterYAnchor到UIPageControl Swift

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排队UIButton的CenterYAnchor到UIPageControl Swift相关的知识,希望对你有一定的参考价值。

我有一些代码,我在UIButton中添加一个“接近”的UIPageController.view,这很有效。

工作代码:

class func closeButton(_ pageController: UIPageViewController) -> UIButton {

    let button = UIButton()

    button.setTitleColor(UIColor.white, for: UIControlState())
    button.setTitle("Close", for: UIControlState())
    button.titleLabel!.font = UIFont.systemFont(ofSize: 15)
    button.contentHorizontalAlignment = UIControlContentHorizontalAlignment.left
    button.translatesAutoresizingMaskIntoConstraints = false

    pageController.view.addSubview(button)

    button.widthAnchor.constraint(equalToConstant: 50).isActive = true
    button.heightAnchor.constraint(equalToConstant: 36).isActive = true
    button.trailingAnchor.constraint(equalTo: pageController.view.trailingAnchor).isActive = true
    button.bottomAnchor.constraint(equalTo: pageController.view.bottomAnchor).isActive = true

    return button
}

但后来我在iPhone X模拟器上测试了我的代码,而UIPageControl从底部比其他iPhone高得多。所以现在我刚刚添加的关闭按钮位于底部圆角,UIPageControl更高。

那么我尝试引用UIPageControl

let pageControl: UIPageControl = UIPageControl.appearance()

然后将button.bottomAnchor.constraint...替换为:

button.centerYAnchor.constraint(equalTo: pageControl.centerYAnchor).isActive = true

但这会导致错误抛出。我尝试打印UIPageControl.frame,它是0,0,0,0。所以我认为这与它有关。

有没有办法对UIPageControl进行约束?

答案

如果您使用的是自定义视图,请尝试在layoutSubviews()方法或视图控制器的viewDidLayoutSubviews()方法中更新约束:

func layoutSubviews() {
    super.layoutSubviews()
    button.centerYAnchor.constraint(equalTo: pageControl.centerYAnchor).isActive = true
}

以上是关于排队UIButton的CenterYAnchor到UIPageControl Swift的主要内容,如果未能解决你的问题,请参考以下文章

当我从纵向模式更改为横向时,按钮背景图像消失

如何以编程方式设置约束加常量?

如何将排队的查询移动到单独的雪花仓库?

CAGradientLayer 未应用于整个屏幕

为啥 Swift4 会强制转换 UIButton 数组!到 [UIButton?] 类型?

如果将 UIButton 作为子视图添加到 UIImageView,则单击 UIButton 不起作用