如何让图像覆盖整个 UIView?

How to get image to cover entire UIView?

我在下面有这段代码,可以将图像放置在视图上。问题是从 iPhone 转移到 iPad 时,创建固定的高度和宽度不起作用。我希望代码能够转移整个 canvas,而不是固定金额。

@IBOutlet weak var jj: draw!

override func viewDidLoad() {
    super.viewDidLoad()

    let image = UIImage(named: "se")
    let imageView = UIImageView(image: image!)
    imageView.frame = CGRect(x: 0, y: 0, width: 200, height: 300)
    jj.addSubview(imageView)
}

如你所愿,将 imageView 覆盖在 jj 视图上。 此代码将正常工作。

@IBOutlet weak var jj: draw!
private var imageView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad((

    self.imageView = UIImageView(image : UIImage(named: ”se”) )
    // set properties blah blah as your code
   // but do not addSubview to Outlet in viewDidLoad
   // they are not initialized yet
}

override func viewWillAppear( _ animated: Bool) {
    super.viewWillAppear(animated);

    // this method can be called multiple times as the view controller presented or dismissed
    // so make sure the imageView is added to superview if it’s not added
    if self.imageView.superview == nil {
        jj.addSubview(imageView);
    }
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
     // layout your responsive code here
     // you wish to cover your image view upon your jj view
     imageView.frame = CGRect(origin: .zero, size: jj.frame.size)
}

您可以轻松地使用自动布局来完成此任务。

      let backgroundImage : UIImageView = {
        let image = UIImageView(image: #imageLiteral(resourceName: "name-of-image"))
        image.translatesAutoresizingMaskIntoConstraints = false
        image.contentMode = .scaleToFill
        return image
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        setUpView()
    }

    func setUpView(){
        view.addSubview(backgroundImage)
        NSLayoutConstraint.activate([
            backgroundImage.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
            backgroundImage.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
            backgroundImage.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),
            backgroundImage.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor)
        ])
    } 

请尝试以下方法,希望对您有所帮助。

override func viewDidLoad() {
super.viewDidLoad((

self.imageView.layer.contents = #imageLiteral(resourceName: "se");
// In place of #imageLiteral(resourceName: "se"), you can write your image name 
}

我建议你在情节提要中做。使用自动布局

所以它在每个设备上看起来都一样。