【发布时间】:2020-01-13 17:35:10
【问题描述】:
我正在以编程方式学习一些自动布局,我想在屏幕底部添加一个按钮,就在安全区域的上方。
我知道代码可以正常工作,因为我在另一个项目中对其进行了测试,我认为这是一个冲突,因为我从另一个项目中获取了这个 viewController。
我的按钮代码
private let previousButton : UIButton = {
let button = UIButton(type: .system)
button.setTitle("Prev", for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false
return button
}()
设置约束的代码
fileprivate func setupBottomControls() {
view.addSubview(previousButton)
previousButton.backgroundColor = .red
view.addSubview(previousButton)
NSLayoutConstraint.activate([
previousButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
previousButton.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),
previousButton.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor),
previousButton.heightAnchor.constraint(equalToConstant: 50)
])
}
就像我说的,这段代码在另一个项目中工作,但我认为它存在冲突,因为我如何调用这个 viewController。 这是来自第一个视图控制器的代码,它使新的 viewController(GettingStartedController) 显示出来,这里就是上面提到的按钮。
func switchVC(){
//enter GettingStarted controller
let controller = GettingStartedController()
view.addSubview(controller.view)
present(UINavigationController(rootViewController: controller), animated: true,completion: nil) //used when no animation is present
}
我认为问题出在关于如何更改对 GettingStartedController 的调用以便以正确方式查看安全区域的任何想法?
【问题讨论】:
-
在应用委托中,如果我使 rootViewController 等于 GettingStartedController,一切正常。
-
为什么需要
view.addSubview(controller.view)? -
什么时候打电话给
setupBottomControls()? -
github.com/Bogdan-Blaj/AutolayoutProblem 链接到 Github。
-
setupBottomControls() 在 viewDidLoad() 方法中被调用。