ios - 在所有 ViewControllers swift ios 11 中添加背景图像的最佳实践

标签 ios iphone swift uiview

之前在 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/

相关文章:

ios - UIPickerView 方法将 UIPickerView 对象作为参数但未使用

ios - 从文件中重新加载 NSStrings 的 NSArray

iPhone - 根据单元格文本计算自定义 TableViewCell 高度

iOS 11 服务器交互

android - 来自 Web 服务的后台 GPS 轮询

objective-c - 方法调用的参数太多

Swift 谓词 AND 和 OR 合二为一

swift - 如何在 Xcode 9 Playground 中使用 Swift 包管理器

iphone - 如何分析iOS中音频队列服务中录制的音频文件?

ios - 如何从 plist 中检索字符串?