首页 > 解决方案 > 在 iOS 12 上启动应用程序时无法呈现 Alpha

问题描述

我刚刚学习 Swift,在我的第一个项目中我遇到了一个奇怪的行为。当我在模拟器中的 iOS 13 上运行我的应用程序时,UIView 成功为背景视图呈现 alpha,但是当我在 iOS 12.4 上运行它时,我却得到了黑屏。

我究竟做错了什么?

iOS13: 当前版本

iOS12:我在模拟器中得到了什么

为了渲染它,我这样做:

class ManualAddVC: UIViewController, UITextFieldDelegate {
...
var backdropView: UIView = {
    let bdView = UIView(frame: CGRect(x: 0,y: 0,width: UIScreen.main.bounds.size.width,height: UIScreen.main.bounds.size.height))
          bdView.backgroundColor = UIColor.black.withAlphaComponent(0.1)
          return bdView
      }()
...
override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(backdropView)
        view.sendSubviewToBack(backdropView)
....
}


标签: iosswiftios13xcode11ios12

解决方案


尝试给出约束而不是使用frameand UIScreen.main.bounds

backdropView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
    backdropView.topAnchor.constraint(equalTo: view.topAnchor),
    backdropView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
    backdropView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
    backdropView.trailingAnchor.constraint(equalTo: view.trailingAnchor)])

推荐阅读