首页 > 解决方案 > 如何删除 Swift 小屏幕上的“safeArea”外观?(背景不是全屏)

问题描述

我正在制作一个项目并解决黑色边框的问题 - 我不明白为什么我的背景没有全屏显示。看起来锚点是对的,也许问题出在 SceneDelegate 中,但我不知道确切。

这是我的 SceneDelegate 代码:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    guard let windowScene = (scene as? UIWindowScene) else { return }
    self.window = UIWindow(frame: windowScene.coordinateSpace.bounds)
    self.window?.windowScene = windowScene
    window?.rootViewController = DetailsViewController()
    window?.makeKeyAndVisible()
}

这是我的视图控制器:

private let detailsView = DetailsView() // view where backgroundImage and cat picture exist

private func setupLayout() { // method for setting constraints for view
    view.addSubview(detailsView)
    detailsView.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor).isActive = true
    detailsView.centerYAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerYAnchor).isActive = true
}

如果您知道如何解决此问题,请与我分享。我试图谷歌它但失败了。

这是模拟器中问题的屏幕截图

标签: swiftuikituiscenedelegate

解决方案


您可以如下设置约束以进行detailsView全屏显示。在这里,我们将顶部、底部、尾随和前导锚点设置detailsView为等于view.safeAreaLayoutGuide

private func setupLayout() { // method for setting constraints for view
    view.addSubview(detailsView)
    let safeAreaGuide = self.view.safeAreaLayoutGuide
    NSLayoutConstraint.activate([
        detailsView.bottomAnchor.constraint(equalTo: safeAreaGuide.bottomAnchor),
        detailsView.topAnchor.constraint(equalTo: safeAreaGuide.topAnchor),
        detailsView.trailingAnchor.constraint(equalTo: safeAreaGuide.trailingAnchor),
        detailsView.leadingAnchor.constraint(equalTo: safeAreaGuide.leadingAnchor)
    ])
}

推荐阅读