作者:小白一枚 | 来源:互联网 | 2022-12-04 09:30
我想在视图中已存在的所有内容后面设置背景图像。
我试过了 :
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,我的代码正常工作。
1> sj-r..:
设置子视图的框架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
}
但是他正在将框架设置为屏幕边界,我认为该边界可以在viewDidLoad上使用?