首页 > 解决方案 > 将 UIImageView 设置为背景 - Swift 4

问题描述

我想在视图中已经存在的所有内容后面设置背景图像。

我试过了 :

override func viewDidLoad() {
    super.viewDidLoad()
    let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
    backgroundImage.image = UIImage(named: "bg-img")
    backgroundImage.contentMode = UIViewContentMode.scaleAspectFill
    self.view.insertSubview(backgroundImage, at: 0)
}

但它没有用(它甚至没有添加img)。所以我导入了 ImageView 组件并使用 Xcode GUI 添加了图像,它确实添加了图像,但在所有内容之上。我已经尝试了几个 Stack Overflow 答案(这就是我从中获得上述代码的地方),但我没有任何运气。

我的文件夹结构如下所示:

在此处输入图像描述

我的图像位于 Assets.xcassets 文件夹中。

更新: 我重新启动了 Xcode,我的代码工作了。

标签: swiftuiimageview

解决方案


设置子视图的框架viewDidLoad不是一个好习惯,因为此时子视图还没有正确放置。您应该在viewDidLayoutSubviewsself.view 之后调用子视图的框架,并且它的子视图布局正确。

你的视图控制器:

var backgroundImage: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    self.backgroundImage = UIImageView(image: UIImage(named: "bg-img"))
    self.backgroundImage.contentMode = .scaleAspectFill
    self.view.insertSubview(self.backgroundImage, at: 0)
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    self.backgroundImage.frame = self.view.bounds
}

推荐阅读