排队UIButton的CenterYAnchor到UIPageControl Swift

问题描述 投票:0回答:1

我有一些代码,我在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进行约束?

swift uibutton uipageviewcontroller uipagecontrol
1个回答
1
投票

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

func layoutSubviews() {
    super.layoutSubviews()
    button.centerYAnchor.constraint(equalTo: pageControl.centerYAnchor).isActive = true
}
© www.soinside.com 2019 - 2024. All rights reserved.