将UIImageView设置为背景-Swift 4

dev*_*ato 0 uiimageview swift

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

我试过了 :

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)
}
Run Code Online (Sandbox Code Playgroud)

但这没有用(甚至没有添加img)。因此,我导入了ImageView组件并使用Xcode GUI添加了图像,它确实添加了图像,但它位于一切之上。我已经尝试了几个Stack Overflow答案(这是我从上面获得代码的地方),但是我没有任何运气。

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

在此处输入图片说明

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

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

sj-*_*j-r 5

设置子视图的框架viewDidLoad不是一个好习惯,因为此时子视图尚未正确放置。您应该在中设置子视图的框架,该框架viewDidLayoutSubviews在self.view及其子视图正确布局后调用。

您的ViewController:

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
}
Run Code Online (Sandbox Code Playgroud)

  • 但是他正在将框架设置为屏幕边界,我认为该边界可以在viewDidLoad上使用? (2认同)