我用一个数组中的随机元素来改变我的背景图片,但它被放大了,而且不完美。

问题描述 投票:0回答:1

我有一个数组,里面有我的Imag-names和一个按钮。当我点击按钮时,背景图片会被改变。所有的工作都在进行中,但是图片有一点被放大,而且没有按屏幕大小缩放。

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)!)
        }

    }

}

那么我应该怎么做,背景图片才不会被放大和完美的缩放?谢谢

arrays swift background background-image
1个回答
0
投票

要随机改变你的视图的背景图像,有一个小的变化 - 这将更新你的背景图像,也不会隐藏你的按钮。


@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)
        }

}

希望它能解决你的问题。


0
投票

这是经过测试的代码

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

© www.soinside.com 2019 - 2024. All rights reserved.