Как подключиться к фоновому изображению, чтобы я мог изменить его в зависимости от оператора switch - PullRequest
0 голосов
/ 29 апреля 2020

Так что я бы хотел, чтобы приложение меняло фоновое изображение в зависимости от условий в моем switch утверждении. Теперь я не знаю, как подключиться к фоновому изображению, чтобы оно изменилось, когда, например, case находится между 801...804, это будет не только return "cloud.bolt", но и изображение, которое у меня есть в моих активах. Вот код:

var conditionName: String {
    switch conditionId {
    case 200...232:
        return "cloud.bolt"
    case 300...321:
        return "cloud.drizzle"
    case 500...531:
        return "cloud.rain"
    case 600...622:
        return "cloud.snow"
    case 701...781:
        return "cloud.fog"
    case 800:
        return "sun.max"
    case 801...804:
        return "cloud.bolt"
    default:
        return "cloud"

    }
} 

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Вариант 1. Если имя ресурса изображения совпадает со строкой, которую вы возвращаете в вашем conditionName, вам не нужно return изображение. Вы можете просто установить его как изображение backgroundImageView, используя init(named:) инициализатор:

backgroundImageView.image = UIImage(named: conditionName)

ИЛИ

Вариант 2 Однако, если вам нужно для возврата строки, а также изображения, вы можете просто изменить тип переменной на Тип кортежа (String, UIImage?):

var conditionName: (String, UIImage?) {
    switch conditionId {
    case 200...232:
        return ("cloud.bolt", UIImage(named: "someimagename"))
    case 300...321:
        return ("cloud.drizzle", UIImage(named: "someimagename"))
    case 500...531:
        return ("cloud.rain", UIImage(named: "someimagename"))
    case 600...622:
        return ("cloud.snow", UIImage(named: "someimagename"))
    case 701...781:
        return ("cloud.fog", UIImage(named: "someimagename"))
    case 800:
        return ("sun.max", UIImage(named: "someimagename"))
    case 801...804:
        return ("cloud.bolt", UIImage(named: "someimagename"))
    default:
        return ("cloud", UIImage(named: "someimagename"))

    }
}
1 голос
/ 30 апреля 2020

Не уверен, что это именно то, что вы хотите, или это можно улучшить (я совершенно новичок в программировании), но здесь идет ...

override func viewDidLoad() {
    super.viewDidLoad()

    var conditionName = String()

    var imageView: UIImageView!
    imageView = UIImageView(frame: view.bounds)
    imageView.contentMode = UIView.ContentMode.scaleAspectFill
    imageView.clipsToBounds = true
    imageView.center = view.center
    self.view.sendSubviewToBack(imageView)


    func assignBackground() {
        view.addSubview(imageView)
    }


    func changeBackground(condition: Int) {

        switch condition {
        case 200...232:
            imageView.image = UIImage(named: "img1")
            conditionName = "cloud.bolt"
        case 300...321:
            imageView.image = UIImage(named: "img2")
            conditionName = "cloud.drizzle"
        case 500...531:
            imageView.image = UIImage(named: "img3")
            conditionName = "cloud.rain"
        case 600...622:
            imageView.image = UIImage(named: "img4")
            conditionName = "cloud.snow"
        case 701...781:
            imageView.image = UIImage(named: "img5")
            conditionName = "cloud.fog"
        case 800:
            imageView.image = UIImage(named: "img6")
            conditionName = "sun.max"
        case 801...804:
            imageView.image = UIImage(named: "img7")
            conditionName = "cloud.bolt"
        default:
            imageView.image = UIImage(named: "img8")
            conditionName = "cloud"
        }
        assignBackground()
    }

    changeBackground(condition: 500)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...