1

I have an array with my Image-names and a button. When I click on the button, the background-image schould get chaged. All is working but the pictures are a little bit zoomed and are not scaled to screen size.

import UIKit

class ViewController: UIViewController {


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

    var imagesArray = ["1", "2", "3", "4"]



    @IBAction func changeBackgroundImageButton_Tapped(_ sender: UIButton) {

        if let randomImage = imagesArray.randomElement(){

            view.backgroundColor = UIColor(patternImage: UIImage(named: randomImage)!)
        }

    }

}

So what should I do that the background-images are not zoomed and scaled perfectly? Thanks!

Dávid Pásztor
  • 51,403
  • 9
  • 85
  • 116

2 Answers2

0

This is tested code

class ViewController: UIViewController {

        var imagesArray = ["1", "2", "3"]

        lazy var imageView:UIImageView = {
            let imageView = UIImageView()
            imageView.frame = UIScreen.main.bounds
            imageView.backgroundColor = .red
            imageView.contentMode = .scaleAspectFit
            imageView.image = UIImage(named: imagesArray.randomElement() ?? "1")
            return imageView
        }()

        @IBAction func changeBackground_Tapped(_ sender: UIButton) {
                imageView.image = UIImage(named: imagesArray.randomElement() ?? "1")

            }


       private func setupView() {
            view.addSubview(imageView)
        }

        override func viewDidLayoutSubviews() {
            super.viewDidLayoutSubviews()
            imageView.frame = view.bounds
        }

        override func viewDidLoad() {


            super.viewDidLoad()
             setupView()


        }


    }

enter image description here

Jawad Ali
  • 13,556
  • 3
  • 32
  • 49
0

To change background image of your view randomly, there is minor changes - that will update your background image and also it will not hide your button.


@IBAction func changeBackground_Tapped(_ sender: Any) {

        UIGraphicsBeginImageContext(view.frame.size)
        UIImage(named: imagesArray.randomElement() ?? "1")?.draw(in: view.bounds)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        if let image = image {
            view.backgroundColor = UIColor(patternImage: image)
        }

}

Hope it will solve your issue.

Ashish Langhe
  • 421
  • 1
  • 5
  • 15