之前在 ios 10 上我有以下代码,它非常适合我。 我刚刚添加了带有特定颜色的 UIImage + UIView 的 UIView 。在 ios 11 上进行测试后,我发现某些屏幕在其余 UI 元素之上有这个 ImageView,那么这有什么问题
override func viewDidLoad() {
super.viewDidLoad()
configureView()
}
func configureView() {
view.backgroundColor = UIColor.clear
let backgroundImage = getBackgroundImage()
view.addSubview(backgroundImage)
view.sendSubview(toBack: backgroundImage)
}
func getBackgroundImage() -> UIView {
let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
backgroundImage.image = UIImage(named: "lemons")
backgroundImage.contentMode = UIViewContentMode.scaleAspectFill
let backgroundView = UIView(frame: UIScreen.main.bounds)
backgroundView.backgroundColor = black
backgroundImage.addSubview(backgroundView)
return backgroundImage
}
最佳答案
如果您以编程方式创建 View Controller (意味着没有 Storyboard或 Nib ),您可以非常简单地添加背景图像,如下所示:
class SomeViewController: UIViewController {
override func loadView() {
view = UIView()
view.frame = UIScreen.main.bounds
setBackground()
}
func setBackground() {
// set image
let bg = UIImageView()
bg.image = // some UIImage
bg.frame = view.bounds
bg.contentMode = .scaleAspectFill
bg.clipsToBounds = true
view.insertSubview(bg, at: 0)
// set tint
let tint = UIView()
tint = view.bounds
tint = UIColor.red
tint = 0.5
view.insertSubview(tint, at: 1)
}
}
请记住,当您以编程方式创建 View Controller 时,您必须创建 View Controller 的实际 View ,即 view = UIView()
。此外,“核心”任务,例如设置背景图像,应该在 loadView
和“finishing-touch”任务中完成,或者您希望在 View Controller 完全加载到其中后执行的任务内存,应该在viewDidLoad中执行。当然,配置 View Controller 的 view 属性绝对不应该留到最后。
关于ios - 在所有 ViewControllers swift ios 11 中添加背景图像的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46475446/